You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure OpenAI代码解释器时遭遇'thread.id'未知参数错误

Azure OpenAI代码解释器thread.id参数错误解决方法

问题场景

集成Azure OpenAI代码解释器时,调用create_and_run方法触发thread.id未知参数错误,相关代码及错误信息如下:

原代码

import os
from openai import AzureOpenAI, AssistantEventHandler
from dotenv import load_dotenv

load_dotenv()

client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    azure_endpoint="2024-07-01-preview"  # 此处错误:应为Azure OpenAI端点URL,而非API版本
)

# 上传文件
files = client.files.create(
    file=open("sum.py", "rb"),
    purpose="assistants"
)

# 创建助手
assistant = client.beta.assistants.create(
    model="gpt-4o-mini",
    instructions="分析代码",
    tool_resources={"code_interpreter": {"file_ids": [files.id]}}
)

# 创建线程
thread = client.beta.threads.create()

# 发送用户消息
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    content=r"编写计算三个数之和的代码",
    role="user"
)

# 运行线程
resp = client.beta.threads.create_and_run(
    assistant_id=assistant.id,
    thread=thread,  # 此处错误:create_and_run不接受thread对象作为参数
)

sum.py文件内容

def sum(a, b):
    return a + b

tot = sum(10, 11)
print(tot)

错误信息

Traceback (most recent call last):
  File "/home/openai-demos/code_interpreter.py", line 34, in <module>
    resp = client.beta.threads.create_and_run(
  File "/home/openai-demos/venv/lib/python3.10/site-packages/openai/_utils/_utils.py", line 274, in wrapper
    return func(*args, **kwargs)
  File "/home/openai-demos/venv/lib/python3.10/site-packages/openai/resources/beta/threads/threads.py", line 686, in create_and_run
    return self._post(
  File "/home/openai-demos/venv/lib/python3.10/site-packages/openai/_base_client.py", line 1260, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
  File "/home/openai-demos/venv/lib/python3.10/site-packages/openai/_base_client.py", line 937, in request
    return self._request(
  File "/home/openai-demos/venv/lib/python3.10/site-packages/openai/_base_client.py", line 1041, in _request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'error': {'message': "Unknown parameter: 'thread.id'.", 'type': 'invalid_request_error', 'param': 'thread.id', 'code': 'unknown_parameter'}}

错误原因

  1. create_and_run参数误用:该方法不支持直接传入thread对象,已有线程时需传入thread_id参数;若无需提前操作线程,可通过messages参数在创建运行时直接生成新线程及消息。
  2. AzureOpenAI初始化错误:azure_endpoint被错误设置为API版本字符串,实际应为Azure OpenAI的端点URL(格式如https://<你的资源名称>.openai.azure.com/)。

修正后的代码

方案一:使用已创建的线程(传入thread_id)

import os
from openai import AzureOpenAI, AssistantEventHandler
from dotenv import load_dotenv

load_dotenv()

client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")  # 修正:使用正确的端点URL
)

# 上传文件
files = client.files.create(
    file=open("sum.py", "rb"),
    purpose="assistants"
)

# 创建助手
assistant = client.beta.assistants.create(
    model="gpt-4o-mini",
    instructions="分析代码",
    tool_resources={"code_interpreter": {"file_ids": [files.id]}}
)

# 创建线程
thread = client.beta.threads.create()

# 发送用户消息
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    content=r"编写计算三个数之和的代码",
    role="user"
)

# 运行线程:传入thread_id而非thread对象
resp = client.beta.threads.create_and_run(
    assistant_id=assistant.id,
    thread_id=thread.id,
)

方案二:直接通过create_and_run创建线程和消息(更简洁)

若无需提前操作线程,可合并线程创建、消息发送和运行步骤:

import os
from openai import AzureOpenAI, AssistantEventHandler
from dotenv import load_dotenv

load_dotenv()

client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)

# 上传文件
files = client.files.create(
    file=open("sum.py", "rb"),
    purpose="assistants"
)

# 创建助手
assistant = client.beta.assistants.create(
    model="gpt-4o-mini",
    instructions="分析代码",
    tool_resources={"code_interpreter": {"file_ids": [files.id]}}
)

# 直接创建线程、发送消息并运行
resp = client.beta.threads.create_and_run(
    assistant_id=assistant.id,
    messages=[
        {
            "role": "user",
            "content": r"编写计算三个数之和的代码"
        }
    ]
)

额外注意事项

  • 确保.env文件中配置了正确的AZURE_OPENAI_API_KEY、AZURE_OPENAI_API_VERSION(如2024-07-01-preview)和AZURE_OPENAI_ENDPOINT。
  • 运行后可通过resp.id获取运行ID,调用client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=resp.id)查询运行状态和结果。

内容的提问来源于stack exchange,提问作者user15980977

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:15:05