見出し画像

Assistants APIでretrievalをStreamlitで使ってみる

OpenAIのAssistants APIでretrievalをStreamlitで使ってみました。

今回は、メモ程度にコードを残しておきますので、丁寧な手順とはなっていないです。

アシスタントにリクエストを投げてから実行されるまでに時間がかかるので、決めうちの30秒のsleepを入れています。

ここのところで、論理的には合っているがなぜ動かないのかを調べていて手間取りました。

app.py本体は以下です。

import streamlit as st
from openai import OpenAI
import os
import time


st.title('AssistantAPI')

os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx"
client = OpenAI()

file = client.files.create(
    file=open("test.txt", "rb"),
    purpose="assistants"
)
        

assistant = client.beta.assistants.create(
    instructions="You are excellent chatbot",
    model="gpt-4-1106-preview",
    tools=[{"type": "retrieval"}],
    file_ids=[file.id]
)

thread = client.beta.threads.create()

user_question = st.text_input("ユーザーの質問を入力してください")
        

message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content=user_question
)


run = client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant.id,
)


run = client.beta.threads.runs.retrieve(
        thread_id=thread.id,
        run_id=run.id
)
                
time.sleep(30)
print(run.status)

messages = client.beta.threads.messages.list(
            thread_id=thread.id,
            order="asc"
)
for message in messages:
    st.write(f"回答: {message.content[0].text.value}")


sk-xxxxにはOpenAIのAPIキーを入力し、別途、requirements.txtには、streamlit、openaiを記載してインストールをすれば使えます。

また、test.txtはapp.pyと同じフォルダに配置します。

このtest.txtには、Assistant APIに調べさせたいマニュアルや文章を入れておきましょう。


実行画面


この記事が気に入ったらサポートをしてみませんか?