🦸♂️
【Assistant API】GPTを使ってアシスタントを作る
目的
日頃、実装するにも家の管理をするにも相談役や話し相手が欲しくなるときがあります。
そんなときAIは良き話し相手になってくれると考えています
Chatbotは使ったことはあるのですがAssistantAPIは使ったことがないので、
openai公式のドキュメントを見ながら作っていこうと考えています。
使用するライブラリとドキュメント
ここをみながら実装します
openai 1.30.3
アシスタントの作成
以下で実装紹介します
下準備
- .envを作成してconfig.pyを読み込むことでapikeyを適用させよう
.envとconfig.py
.env内の記載
GPT_APIKey='ご自身のAPIkeyを記載'
#config.pyの内容
from dotenv import load_dotenv
load_dotenv()
import os
apikey = os.getenv('GPT_APIKey') #gpt key 読み込み
アシスタントを作成
サンプルの
# assistant.py
import config
from openai import OpenAI
client = OpenAI(
api_key = config.apikey
)
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-3.5-turbo-0125",
)
パラメータ | 内容 |
---|---|
name | アシスタントの名前 string or null |
instructions | アシスタントの役割 string or null |
model | 使用するアシスタントのモデル string |
tools | アシスタントで有効になっている ツールリスト、list |
アシスタントとユーザの会話と質問の追加まで
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_and_poll(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Please address the user as Jane Doe. The user has a premium account."
)
print("run: ", run)
# ステータスの成功と失敗を見る
if run.status == 'completed':
messages = client.beta.threads.messages.list(
thread_id=thread.id
)
print(messages)
else:
print(run.status)
ソースをまとめる
import config
from openai import OpenAI
client = OpenAI(
api_key = config.apikey
)
# アシスタントを作成
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-3.5-turbo-0125",
)
# アシスタントとユーザの会話開始
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_and_poll(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Please address the user as Jane Doe. The user has a premium account."
)
# ステータスの成功と失敗を見る
if run.status == 'completed':
messages = client.beta.threads.messages.list(
thread_id=thread.id
)
print(messages)
else:
print(run.status)
実行結果の抜粋
今回使ったサンプル内で3x + 11 = 14が成り立つにはx=1なので、解答結果も正しい
value='The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\). If you have any more equations you need help with or any other questions, feel free to ask!'),
全体図
ライフサイクル
ストリーミング時はステータスの管理が必要なのですが今回使っていないため、
紹介で終わります
実行したときの費用
アシスタントAPI
$0.03
まとめ
今回はサンプルを使ってアシスタントの呼び出し方を学びました。
- 呼び出すたびにモデルが作られる対策
- 具体的にアシストしてほしい内容をまとめる
- ツールで使う関数を用意する
上記を準備して自分用のアシスタントを作り上げたいです!!
Discussion