Function Calling で為替レート取得を実装

Assistants API の使い方

日付:2025年2月21日

OpenAI Assistants API の Function Calling を利用して外部 API(為替レート API)と連携する方法を解説します。実際にコードを動かし、ユーザーの質問に応じて為替レートを取得する仕組みを構築します。

目 次

1. はじめに

OpenAI の Assistants API には、外部 API と連携するための Function Calling 機能が搭載されています。

この機能を利用することで、外部の情報を取得したり、特定のアクションを実行 することが可能になります。

本記事では、 「ユーザーが為替レートを尋ねると、外部 API から為替情報を取得し、適切な回答を生成する Assistants API の活用方法」 を解説します。

2. Assistants API の Function Calling とは?

Assistants API の Function Calling 機能を活用すると、以下のようなことが可能になります。

  • 外部 API との連携(例: 為替レート API、株価 API など)
  • データベースや社内システムとの連携
  • ユーザーのリクエストに応じたアクションの実行(メール送信、ファイル検索など)

今回の実装では、 OpenAI Assistants API と為替レート API(ExchangeRate-API)を組み合わせて、リアルタイムの為替レートを取得する方法 を紹介します。

3. Function Calling を利用した Assistants の作成

まず、OpenAI Assistants API に新しいアシスタントを作成し、 get_exchange_rate という関数を登録します。

この関数を通じて、ユーザーが「USD から JPY への為替レートは?」と尋ねると、外部の為替 API を呼び出して情報を取得する仕組みを構築します。

3.1 Assistants API でアシスタントを作成

以下のコードを実行し、get_exchange_rate 関数を登録したアシスタントを作成します。

PYTHON
from openai import OpenAI import os # OpenAI API キー OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") # OpenAI クライアントの初期化 openai = OpenAI(api_key=OPENAI_API_KEY) # Assistants API を使って新しいアシスタントを作成 assistant = openai.beta.assistants.create( name="Exchange Rate Assistant", instructions="ユーザーのリクエストに応じて、外部 API から為替レートを取得してください。", model="gpt-4-turbo", tools=[{ "type": "function", "function": { "name": "get_exchange_rate", "description": "指定された通貨ペアの為替レートを取得します。", "parameters": { "type": "object", "properties": { "base_currency": {"type": "string", "description": "基準通貨(例: USD, JPY)"}, "target_currency": {"type": "string", "description": "対象通貨(例: EUR, GBP)"} }, "required": ["base_currency", "target_currency"] } } }] ) print("Assistant ID:", assistant.id)

このコードを実行すると、新しいアシスタントが作成され、get_exchange_rate 関数が登録されます。

作成したアシスタントの ID は、後で API を呼び出すときに使用します。

4. Function Calling を使った為替レートの取得

次に、ユーザーが「USD から JPY への為替レートは?」と尋ねたときに、ExchangeRate-API を使って為替情報を取得し、アシスタントの回答として表示する処理を実装します。

4.1 為替レートを取得する関数の作成

PYTHON
import requests def get_exchange_rate(base_currency, target_currency): EXCHANGE_API_KEY = os.environ.get("EXCHANGE_API_KEY") API_URL = f"https://v6.exchangerate-api.com/v6/{EXCHANGE_API_KEY}/pair/{base_currency}/{target_currency}" response = requests.get(API_URL) if response.status_code == 200: data = response.json() return f"{base_currency}{target_currency} の為替レートは {data['conversion_rate']} です。" else: return "為替レート情報を取得できませんでした。"

この関数は、外部の為替 API から リアルタイムの為替レートを取得する 役割を持ちます。

4.2 Assistants API とのやりとり

PYTHON
import time import json # ユーザーとのスレッドを作成 thread = openai.beta.threads.create() # ユーザーの質問をスレッドに追加 user_message = openai.beta.threads.messages.create( thread_id=thread.id, role="user", content="KRW(韓国ウォン) から JPY への為替レートは?" ) # 既存の Assistant ID を使用して処理を実行 run = openai.beta.threads.runs.create( thread_id=thread.id, assistant_id=assistant.id ) # ステータスの確認 while True: run_status = openai.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id) if run_status.status in ["completed", "failed"]: break time.sleep(1) # 結果を取得し、表示 messages = openai.beta.threads.messages.list(thread_id=thread.id) for msg in reversed(messages.data): print(f"{msg.role}: {msg.content[0].text.value}")

このコードを実行すると、以下のような出力が得られます。

OUTPUT
user: KRW(韓国ウォン) から JPY への為替レートは? assistant: KRW(韓国ウォン)から JPY(日本円)への為替レートは 0.1044 です。

5. まとめ

本記事では、 Assistants API の Function Calling を活用して、外部の為替レート API から情報を取得する方法 を解説しました。

  • Assistants API に get_exchange_rate 関数を登録
  • ユーザーの質問を処理し、為替 API から情報を取得
  • 取得したデータをアシスタントの応答として返す

Function Calling を活用することで、 リアルタイムのデータを AI に組み込むことが可能 になります。