🐡

ChatGPTのAssistant使ってみた!

2023/11/07に公開

はじめに

https://platform.openai.com/docs/assistants/overview

概要

特定の指示に従ったり、知識を追加して活用したり、他のツールと連携してさまざまなタスクを実行できるAIを作れます!

早速遊んでみる

チュートリアルをやってみます。

https://platform.openai.com/docs/assistants/overview

まずは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が増えて管理が大変になるので、注意してください。

https://platform.openai.com/assistants

次に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で編集を提案
GMOメディアテックブログ

Discussion