見出し画像

Assistant API Code InterpreterをStreamlitで実装してみた

前回に引き続き、今回はAssistant APIのCode InterpreterをStreamlitで実装してみました。

今回も詳細な説明は割愛して、app.pyだけ紹介します。sk-xxxxにはOpenAIのAPIキーを入力したり、別途、openaiやstremlitをpipでインストールしてください。

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

st.title('😱Assistant API')

os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxxxxxxxxxxx"
client = OpenAI()
        
assistant = client.beta.assistants.create(
    name="Math Tutor",
    instructions="You are a personal math tutor. Write and run code to answer math questions.",
    model="gpt-4-1106-preview",
    tools=[{"type": "code_interpreter"}]
)

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.role}: {message.content[0].text.value}")


実行結果をいくつか載せておきます。

3x+11=17の詳細な回答過程を表示してもらっています。


日本語でも出来るかと思い、日本語で4x+3=15の回答過程を答えてもらっています。


素数を求めるコードを依頼したら、素数が表示されました。

この素数の回答について、モデルの学習が影響しているのか、それとも、コードを書かれて実行されているのかわからないため何とも言えません。


所感としては、当初意図していたCode Interpreterと違うので、使い方とコードについては詳しく調べることが必要かなと思いました。

とは言え、数式の回答の過程を丁寧に回答しているのには驚きました。

簡単な数式だったということが影響しているのかと思いますが、数的理解力が上昇しているということを実感しました。

また、コード観点では、Assistant APIのRetrievalと似ている部分があり書きやすいのではないかと思いました。

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