OpenAI Assistants API入門:AIアシスタント開発の決定版ガイド

AIを知りたい

OpenAIのAssistants APIって普通のChat Completions APIと何が違うんですか?

AIエンジニア

大きな違いは状態管理とツール実行をAPI側が行ってくれることです。会話の履歴管理やファイル検索、コード実行をOpenAI側で自動的に処理してくれます。

AIを知りたい

自分で管理しなくていいんですか?

AIエンジニア

そうです!Chat Completionsでは会話履歴やツール呼び出しを自分で管理する必要がありますが、Assistants APIではそれらをOpenAIのサーバーが管理してくれます。

Assistants APIとは

OpenAI Assistants APIとは、AIアシスタントの構築を簡素化するAPIです。スレッド(会話履歴)管理、ファイル検索(RAG)、コード実行、関数呼び出しなどの機能を提供し、開発者はビジネスロジックに集中できます。

Assistants APIの基本概念

AIを知りたい

Assistants APIの基本的な仕組みを教えてください!

AIエンジニア

4つの重要な概念があります。

概念 説明 役割
Assistant AIアシスタントの定義 モデル・ツール・指示の設定
Thread 会話スレッド メッセージ履歴の管理
Message 個別のメッセージ ユーザーとAIの発言
Run 実行リクエスト Assistantにスレッドを処理させる

Assistants APIの実装方法

AIを知りたい

実際のコードを見せてください!

AIエンジニア

Python SDKを使った実装例です。

from openai import OpenAI
client = OpenAI()

# 1. Assistantの作成
assistant = client.beta.assistants.create(
    name="データ分析アシスタント",
    instructions="あなたはデータ分析の専門家です。",
    model="gpt-4o",
    tools=[
        {"type": "code_interpreter"},
        {"type": "file_search"}
    ]
)

# 2. スレッドの作成
thread = client.beta.threads.create()

# 3. メッセージの追加
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="売上データを分析してトレンドを教えてください"
)

# 4. 実行(ストリーミング)
with client.beta.threads.runs.stream(
    thread_id=thread.id,
    assistant_id=assistant.id,
) as stream:
    for text in stream.text_deltas:
        print(text, end="", flush=True)

ファイル検索(RAG)の実装

AIを知りたい

ファイルを渡して質問に答えさせることもできるんですか?

AIエンジニア

はい!File Search機能でRAGが簡単に実装できます。PDFやテキストファイルをアップロードするだけです。

# ベクトルストアの作成
vector_store = client.beta.vector_stores.create(
    name="社内ドキュメント"
)

# ファイルのアップロード
file = client.files.create(
    file=open("manual.pdf", "rb"),
    purpose="assistants"
)

# ベクトルストアにファイルを追加
client.beta.vector_stores.files.create(
    vector_store_id=vector_store.id,
    file_id=file.id
)

# Assistantにベクトルストアを紐付け
assistant = client.beta.assistants.update(
    assistant.id,
    tool_resources={
        "file_search": {
            "vector_store_ids": [vector_store.id]
        }
    }
)

Chat Completions API vs Assistants API

AIを知りたい

結局どっちを使えばいいんですか?

AIエンジニア

用途によって使い分けましょう。

観点 Chat Completions Assistants API
会話管理 自前で実装 API側で管理
ファイル検索 自前でRAG構築 File Search組み込み
コード実行 非対応 Code Interpreter対応
柔軟性 高い 中程度
コスト トークンのみ トークン+ストレージ
おすすめ シンプルなチャット 複雑なアシスタント、RAG

AIを知りたい

用途に合わせて選べばいいんですね!

AIエンジニア

その通りです。会話の状態管理やRAGが必要ならAssistants API、シンプルなAPI呼び出しならChat Completionsを選びましょう。まずはPlaygroundで試してみるのがおすすめですよ!

関連記事