你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
Azure AI Foundry 代理服务现已正式发布,可提供更多工具和更好的企业功能。 建议使用新服务进行最新功能更新和改进。
代码解释器允许助手 API 在沙盒化执行环境中编写和运行 Python 代码。 启用代码解释器后,助手可以迭代运行代码,以解决更具挑战性的代码、数学和数据分析问题。 当助手编写了无法运行的代码时,它可以通过修改并运行不同的代码来循环访问此代码,直到代码执行成功。
重要
除了与使用 Azure OpenAI 相关的基于令牌的费用之外,代码解释器还有额外的费用。 如果助手在两个不同的线程中同时调用代码解释器,则会创建两个代码解释器会话。 默认情况下,每个会话处于活动状态 1 小时,空闲超时为 30 分钟。
代码解释器支持
支持的模型
模型页包含有关支持助手和代码解释器的区域/模型的最新信息。
建议使用具有最新模型的助手来利用新功能、更大的上下文窗口、更新的训练数据。
API 版本
- 从
2024-02-15-preview开始
支持的文件类型
| 文件格式 | MIME 类型 |
|---|---|
| .c | text/x-c |
| .cpp | text/x-c++ |
| .csv | application/csv |
| .docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
| .html | text/html |
| .java | text/x-java |
| .json | application/json |
| .md | text/markdown |
| application/pdf | |
| .php | text/x-php |
| .pptx | application/vnd.openxmlformats-officedocument.presentationml.presentation |
| .py | text/x-python |
| .py | text/x-script.python |
| .rb | text/x-ruby |
| .tex | text/x-tex |
| .txt | text/plain |
| .css | text/css |
| .jpeg | image/jpeg |
| .jpg | image/jpeg |
| .js | text/javascript |
| .gif | 图像/GIF |
| .png | image/png |
| .tar | application/x-tar |
| .ts | application/typescript |
| .xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
| .xml | application/xml 或“text/xml” |
| .zip | application/zip |
文件上传 API 参考
助手使用与微调相同的 API 进行文件上传。 上传文件时,必须为 purpose 参数指定适当的值。
启用代码解释器
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
instructions="You are an AI assistant that can write code to help answer math questions",
model="<REPLACE WITH MODEL DEPLOYMENT NAME>", # replace with model deployment name.
tools=[{"type": "code_interpreter"}]
)
为代码解释器上传文件
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
# Upload a file with an "assistants" purpose
file = client.files.create(
file=open("speech.py", "rb"),
purpose='assistants'
)
# Create an assistant using the file ID
assistant = client.beta.assistants.create(
instructions="You are an AI assistant that can write code to help answer math questions.",
model="gpt-4-1106-preview",
tools=[{"type": "code_interpreter"}],
tool_resources={"code_interpreter":{"file_ids":[file.id]}}
)
将文件传递给单个线程
除了使文件在助手级别可供访问之外,你还可以传递文件,使它们仅可供特定线程访问。
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
thread = client.beta.threads.create(
messages=[
{
"role": "user",
"content": "I need to solve the equation `3x + 11 = 14`. Can you help me?",
"file_ids": ["file.id"] # file id will look like: "assistant-R9uhPxvRKGH3m0x5zBOhMjd2"
}
]
)
下载代码解释器生成的文件
可以在助手消息响应中找到代码解释器生成的文件
{
"id": "msg_oJbUanImBRpRran5HSa4Duy4",
"assistant_id": "asst_eHwhP4Xnad0bZdJrjHO2hfB4",
"content": [
{
"image_file": {
"file_id": "assistant-1YGVTvNzc2JXajI5JU9F0HMD"
},
"type": "image_file"
},
# ...
}
可以通过将文件传递给文件 API 来下载这些生成的文件:
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
image_data = client.files.content("assistant-abc123")
image_data_bytes = image_data.read()
with open("./my-image.png", "wb") as file:
file.write(image_data_bytes)
另请参阅
- 文件上传 API 参考
- 助手 API 参考
- 通过助手操作指南详细了解如何使用助手。
- Azure OpenAI 助手 API 示例