PR

Assistants APIの使い方 ChatGPTのAIアシスタント

Assistants APIの使い方

Assistants APIは、OpenAIのAIアシスタント関連のAPIです。

関連 Assistants overview – OpenAI API

Assistants APIではツールの機能を活用でき、RAG(Retrieval Augmented Generation)のようなタスクも可能になります。

関連 ChatGPTを学習させる方法

Assistants APIを使うための主なステップは以下の通りです。

Assistantの作成
`openai.OpenAI().beta.assistants.create()`メソッドを使ってAssistantを作成します。
引数で`name`(Assistantの名前)、`instructions`(Assistantの動作指示)、`tools`(使用するツール)、`model`(使用するモデル)を指定できます。

Threadの作成
`openai.OpenAI().beta.threads.create()`メソッドでThreadを作成します。
Threadは会話のセッションを表します。

Messageの追加
`openai.OpenAI().beta.threads.messages.create()`メソッドでMessageをThreadに追加します。
Messageにはユーザーの質問などのテキストを指定します。

Assistantの実行
`openai.OpenAI().beta.threads.runs.create()`メソッドでAssistantを実行します。
実行時に指定したThreadに対して、Assistantが応答のMessageを追加します。

結果の取得
`openai.OpenAI().beta.threads.messages.list()`メソッドでThreadに追加された全Messageを取得できます。

具体的な使い方の例は以下の通りです。(Pythonスクリプトの例)

import openai

# APIキーの設定
openai.api_key = "YOUR_API_KEY"

# Assistantの作成
assistant = openai.OpenAI().beta.assistants.create(
    name="My Assistant",
    instructions="You are a helpful AI assistant.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4"
)

# Threadの作成 
thread = openai.OpenAI().beta.threads.create()

# Messageの追加
message = openai.OpenAI().beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="Hello, can you help me with a coding problem?"
)

# Assistantの実行
run = openai.OpenAI().beta.threads.runs.create(
    thread_id=thread.id, 
    assistant_id=assistant.id
)

# 結果の取得
messages = openai.OpenAI().beta.threads.messages.list(thread.id)
print(messages)

 

この例では、”My Assistant”というAssistantを作成し、コード解釈ツール(code_interpreter)を有効にしています。次にThreadを作成し、ユーザーのメッセージを追加します。最後にAssistantを実行し、応答メッセージを取得しています。

Assistants APIではツールの機能を活用でき、RAG(Retrieval Augmented Generation)のようなタスクも可能になります。ツールの詳細や高度な使い方は公式ドキュメントを参照するとよいでしょう。

Assistants APIのメリットとデメリット

Assistants APIは高度な機能とカスタマイズ性が魅力ですが、コストとベンダーロックインのリスク、セキュリティ面での懸念などがデメリットとなります。用途に合わせて総合的に判断する必要があります。

メリット

カスタマイズ性が高い
高度な機能を利用できる
開発の効率化
スケーラビリティが高い

カスタマイズ性が高い

  • 特定の用途に特化したAIアシスタントを作成できる
  • 指示やツールを自由に設定可能
  • 会話履歴を永続的に保持できる

高度な機能を利用できる

  • コード実行、外部データ参照、関数呼び出しなど高度な機能が利用可能
  • マルチモーダル入力(テキスト、画像など)に対応

開発の効率化

  • 高度なAI機能をAPIで簡単に組み込める
  • 自前でAIモデルを構築する必要がない

スケーラビリティが高い

  • 必要に応じてリソースを拡張できる
  • 大規模なユーザー数にも対応可能

デメリット

コストがかかる
ベンダーロックインのリスク
セキュリティ上の懸念
学習コストがかかる
制約事項がある

コストがかかる

  • APIの利用料金がかかる
  • 大量のデータ転送が発生する可能性がある

ベンダーロックインのリスク

  • OpenAIのサービスに依存する
  • 他のベンダーへの移行が困難

セキュリティ上の懸念

  • 機密データをアップロードする必要がある
  • データの漏洩リスクがある

学習コストがかかる

  • APIの利用方法や設定を理解する必要がある
  • プロンプトエンジニアリングのスキルが求められる

制約事項がある

  • 利用できるツールやモデルに制限がある
  • 機能拡張のタイミングはOpenAIに依存する

Assistants APIの料金

Assistants APIの総料金は、選択した言語モデルの料金に加えて、使用したツールの料金が上乗せされる形になります。ファイル添付やコンテキストの長さによっても料金が変動するため、事前の正確な見積もりは難しい面があります。

Assistants APIで使用されるトークンは、選択された言語モデル(GPT-4、GPT-3.5-Turbo等)のトークンごとの入力/出力料金で課金されます。

加えて、以下のツール使用料が課金されます。

  • Code interpreter: $0.03 / セッション
  • Retrieval: $0.20 / GB / アシスタント / 日

Retrievalの料金は、同じファイルIDを複数のアシスタントに割り当てた場合、アシスタント数分課金されます。

メッセージに添付されたファイルも、Retrievalツールが有効な実行の一部である場合、アシスタントごとに課金されます。

アシスタントはスレッドからどのコンテキストを含めるかを選択し、そのコンテキストに応じてトークン数が変わるため、料金も変動します。

Assistants APIのまとめ

  • Assistants APIは、OpenAI社のAIアシスタント作成のためのAPI。
  • カスタマイズ性が高く高度な機能を実装できるポテンシャルがあるが、コストやセキュリティ上の懸念などの問題点もある
  • 料金は言語モデルごとの入力・出力に加えツール使用料がかかる。このため、事前の正確な見積もりは難しい

関連 ChatGPTの使い方