📘
Assistants.create() got an unexpected keyword argument 'file_ids'の対処方法
前提
- python:3.10.x
- openai:1.35.13
事象
以下のDocsを参考にAssitant API を実行しようとした。
assistant.py
import time
import json
from openai import AzureOpenAI
client = AzureOpenAI(
api_key= "<key>",
api_version="2024-02-15-preview",
azure_endpoint = "<endpoint>"
)
# ファイルの登録
file = client.files.create(
file=open("<"ファイルパス>", "rb"),
purpose='assistants'
)
INSTRUCTIONS = """
あなたはデータ分析のスペシャリストです。
csvファイルを元に、各データのカラムを確認し、データの特徴を把握してください。
## 規約
- 日本語で回答してください。
"""
assistant_1 = client.beta.assistants.create(
instructions=INSTRUCTIONS, # 指示 (アシスタントの定義や目的など)
tools=[{"type": "code_interpreter"}], # アシスタントが使用できるツールのリスト (ここでは Code interpreter のみ)
model="<model>", # モデルのデプロイ名
file_ids=[file.id]
)
# スレッドの作成
thread_1 = client.beta.threads.create()
# スレッドの実行
run_1_1 = client.beta.threads.runs.create(
thread_id=thread_1.id,
assistant_id=assistant_1.id
)
# アシスタントが回答のメッセージを返すまで待つ関数
def wait_for_assistant_response(thread_id, run_id):
while True:
time.sleep(5)
# 実行ステータスの取得
run = client.beta.threads.runs.retrieve(
thread_id=thread_id,
run_id=run_id
)
status = run.status
if status in ["completed", "cancelled", "expired", "failed"]:
print(status)
break
# スレッドのメッセージを確認する関数
def print_thread_messages(thread_id):
msgs = client.beta.threads.messages.list(thread_id=thread_id)
for m in msgs:
assert m.content[0].type == "text"
print({"role": m.role, "message": m.content[0].text.value})
# アシスタントが回答のメッセージを返すまで待つ
wait_for_assistant_response(thread_1.id, run_1_1.id)
# スレッドのメッセージを確認
print_thread_messages(thread_1.id)
結果として、以下のエラーが出現。
Assistants.create() got an unexpected keyword argument 'file_ids'
対応策
OpenAIのバージョンを1.20.0にダウングレードする
pip uninstall openai
pip install openai==1.20.0
再度実行すると、エラーが出ずに実行できた。
completed
{'role': 'assistant', 'message': 'このデータセットには、以下のカラムが含まれています。\n\n- PassengerId: 乗客ID\n- Survived: 生存したかどうか (0 = No, 1 = Yes)\n- Pclass: チケットのク ラス (1 = 1st, 2 = 2nd, 3 = 3rd)\n- Name: 乗客の名前\n- Sex: 性別\n- Age: 年齢\n- SibSp: 同乗している兄弟/配偶者の数\n- Parch: 同乗している親/子供の数\n- Ticket: チケット番号\n- Fare: 乗船料金\n- Cabin: 客室番号\n- Embarked: 乗船港 (C = Cherbourg, Q = Queenstown, S = Southampton)'}
Discussion