😺

OpenAIライブラリのざっくりした使い方

2023/11/08に公開

説明しないこと

  • OpenAI の APIKEY の取得方法
  • Python の環境構築
  • JupyterNotebook の環境構築

仕組み

  • 準備
    1. クライアント作成
    2. アシスタント作成
    3. スレッド作成
  • 実行
    1. ユーザーメッセージの追加(質問)
    2. 回答生成
    3. 結果をテキストファイルに出力して閲覧

使い方

それぞれのコードブロックを Notebook のコードセルと同じように分けて配置する。

最初の3つのセルを実行後、質問のたびにうしろ2つを実行し、質問を行う。
スレッドの作成を実行し直すことで、会話をリセットできる。

ソースコード

クライアントの作成
from openai import OpenAI

client = OpenAI(api_key="sk-・・・")
アシスタントの作成
assistant = client.beta.assistants.create(
    # アシスタントの定義?
    instructions="""
    あなたは優秀なプログラマーです。サービス開発のお手伝いをしてください。
    """,
    model="gpt-4-1106-preview",
)
assistant_id = assistant.id
スレッドの作成
thread = client.beta.threads.create()
thread_id = thread.id
質問と回答生成
# ユーザーメッセージの追加
message = client.beta.threads.messages.create(
    thread_id=thread_id, role="user", content=input("質問を入力してください")
)

run = client.beta.threads.runs.create(
    thread_id=thread_id,
    assistant_id=assistant_id,
)
回答を確認して、テキストファイルに書き込み
# スレッドのメッセージリストの確認

# スレッドとアシスタントのIDを利用して、一意になるようにしている
result_file = f"{thread_id}_{assistant_id}.md"

messages = client.beta.threads.messages.list(thread_id=thread_id)
messages_list = [message for message in messages]

# ファイルの初期化
with open(result_file, "w") as file:
    file.truncate(0)

# ファイルを書き込みモードで開く
with open(result_file, 'w') as file:
    # IDの情報をファイルに書き込む
    file.write(f'Thread_ID:{thread_id}\n\n')
    file.write(f'Assistant_ID:{assistant_id}\n\n')
    file.write('----\n')

    for message in reversed(messages_list):
        # メッセージの情報をファイルに書き込む
        file.write(f'{message.role}{message.content[0].text.value}\n\n')

GitHubで編集を提案

Discussion