🐡
ChatGPTのAssistant使ってみた!
はじめに
概要
特定の指示に従ったり、知識を追加して活用したり、他のツールと連携してさまざまなタスクを実行できるAIを作れます!
早速遊んでみる
チュートリアルをやってみます。
まずはAssistantを作ります。
カスタマイズされたChatGPTだと思ってください。
assistantCreate.py
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
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.",
tools=[{"type": "code_interpreter"}],
model="gpt-4-1106-preview",
)
print(assistant.id)
コードを実行すると、以下のリンク先で表示されます。
先ほど表示されたidをメモしておきます。
何回も実行すると、Assistantが増えて管理が大変になるので、注意してください。
次にAssistantを実行します。
assistantRun.py
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI()
# スレッドを作成
thread = client.beta.threads.create()
# スレッドにメッセージを追加
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="I need to solve the equation `3x + 11 = 14`. Can you help me?",
)
# スレッドを実行
run = client.beta.threads.runs.create(
thread_id=thread.id,
# さっきメモしたidを入れる
assistant_id="assistantのid"
instructions="Please address the user as Jane Doe. The user has a premium account.",
)
print(run.id, thread.id)
これだけで、実行できました!
Assistantの実行は非同期で行われるため、結果は以下のコードで取得できます。
assistantResult.py
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI()
status = "queued"
# 実行が完了するまで待つ
while status != "completed":
# スレッドの実行結果を取得
run = client.beta.threads.runs.retrieve(
thread_id="threadのid",
run_id="runのid",
)
status = run.status
messages = client.beta.threads.messages.list(
thread_id="threadのid",
)
# 最新の応答が最初に入っているので、逆順にする
for message in reversed(messages.data):
print(message.content[0].text.value)
今回の場合は以下のようになりました。
I need to solve the equation `3x + 11 = 14`. Can you help me?
The solution to the equation \(3x + 11 = 14\) is \(x = 1\).
まとめ
今回はAssistantを使ってみました。
Code Interpreter、Function calling、Knowledge Retrievalの3つのツールがあり、それぞれのツールを組み合わせてAssistantを作ることができます。
可能性は無限大で、どんなことでもできそうですね!
最新版のGPT-4 Turboが速い、安い、賢い + Assistantでまさに鬼に金棒。
GitHubで編集を提案
Discussion