[译][AI OpenAI-doc] 代码解释器 Beta

简介: 代码解释器允许助手在受限执行环境中编写和运行 Python 代码。该工具可以处理具有不同数据和格式的文件,并生成带有数据和图形图像的文件。

代码解释器允许助手在受限执行环境中编写和运行 Python 代码。该工具可以处理具有不同数据和格式的文件,并生成带有数据和图形图像的文件。代码解释器允许您的助手迭代运行代码,以解决具有挑战性的代码和数学问题。当您的助手编写的代码无法运行时,它可以通过尝试运行不同的代码来迭代此代码,直到代码执行成功为止。

在这里查看如何开始使用代码解释器的快速入门。

工作原理

代码解释器的费用是每个会话 0.03 美元。如果您的助手在两个不同的线程中同时调用代码解释器(例如,每个终端用户一个线程),则会创建两个代码解释器会话。每个会话默认为一小时处于活动状态,这意味着如果用户在同一线程中与代码解释器交互最多一小时,您只需支付一个会话的费用。

启用代码解释器

在助手对象的 tools 参数中传递 code_interpreter 以启用代码解释器:

assistant = client.beta.assistants.create(
  instructions="你是一位个人数学导师。当被问及数学问题时,请编写并运行代码来回答问题。",
  model="gpt-4-turbo",
  tools=[{
   "type": "code_interpreter"}]
)

然后,模型根据用户请求的性质决定何时在运行中调用代码解释器。可以通过在助手的说明中提醒来促进此行为(例如,“编写代码来解决这个问题”)。

将文件传递给代码解释器

在助手级别传递的文件可以由具有此助手的所有运行访问:

# 上传一个带有“assistants”用途的文件
file = client.files.create(
  file=open("mydata.csv", "rb"),
  purpose='assistants'
)

# 使用文件 ID 创建助手
assistant = client.beta.assistants.create(
  instructions="你是一位个人数学导师。当被问及数学问题时,请编写并运行代码来回答问题。",
  model="gpt-4-turbo",
  tools=[{
   "type": "code_interpreter"}],
  tool_resources={
   
    "code_interpreter": {
   
      "file_ids": [file.id]
    }
  }
)

文件也可以在线程级别传递。这些文件仅在特定线程中可访问。使用文件上传端点上传文件,然后在消息创建请求中将文件 ID 作为一部分传递:

thread = client.beta.threads.create(
  messages=[
    {
   
      "role": "user",
      "content": "我需要解方程 `3x + 11 = 14`。你能帮我吗?",
      "attachments": [
        {
   
          "file_id": file.id,
          "tools": [{
   "type": "code_interpreter"}]
        }
      ]
    }
  ]
)

文件最大大小为 512 MB。代码解释器支持各种文件格式,包括 .csv、.pdf、.json 等等。有关支持的文件扩展名(及其相应的 MIME 类型)的更多详细信息,请参见下面的支持文件部分。

读取代码解释器生成的图像和文件

代码解释器在 API 中还会输出文件,例如生成图像图表、CSV 文件和 PDF 文件。生成的文件有两种类型:

  • 图像
  • 数据文件(例如助手生成的包含数据的 csv 文件)

当代码解释器生成图像时,您可以在助手消息响应的 file_id 字段中查找并下载此文件:

{
   
    "id": "msg_abc123",
    "object": "thread.message",
    "created_at": 1698964262,
    "thread_id": "thread_abc123",
    "role": "assistant",
    "content": [
    {
   
      "type": "image_file",
      "image_file": {
   
        "file_id": "file-abc123"
      }
    }
  ]
}

然后,可以通过将文件 ID 传递给 Files API 来下载文件内容:

from openai import OpenAI

client = OpenAI()

image_data = client.files.content("file-abc123")
image_data_bytes = image_data.read()

with open("./my-image.png", "wb") as file:
    file.write(image_data_bytes)

当代码解释器引用文件路径(例如“下载此 csv 文件”)时,文件路径被列为注释。您可以将这些注释转换为链接以下载文件:

{
   
  "id": "msg_abc123",
  "object": "thread.message",
  "created_at": 1699073585,
  "thread_id": "thread_abc123",
  "role": "assistant",
  "content": [
    {
   
      "type": "text",
      "text": {
   
        "value": "The rows of the CSV file have been shuffled and saved to a new CSV file. You can download the shuffled CSV file from the following link:\n\n[Download Shuffled CSV File](sandbox:/mnt/data/shuffled_file.csv)",
        "annotations": [
          {
   
            "type": "file_path",
            "text": "sandbox:/mnt/data/shuffled_file.csv",
            "start_index": 167,
            "end_index": 202,
            "file_path": {
   
              "file_id": "file-abc123"
            }
          }
          ...

代码解释器的输入和输出日志

通过列出调用代码解释器的运行步骤,您可以检查代码解释器的代码输入和输出日志:

run_steps = client.beta.threads.runs.steps.list(
  thread_id=thread.id,
  run_id=run.id
)
{
   
  "object": "list",
  "data": [
    {
   
      "id": "step_abc123",
      "object": "thread.run.step",
      "type": "tool_calls",
      "run_id": "run_abc123",
      "thread_id": "thread_abc123",
      "status": "completed",
      "step_details": {
   
        "type": "tool_calls",
        "tool_calls": [
          {
   
            "type": "code",
            "code": {
   
              "input": "# Calculating 2 + 2\nresult = 2 + 2\nresult",
              "outputs": [
                {
   
                  "type": "logs",
                  "logs": "4"
                }
                        ...
 }

支持的文件

对于文本/ MIME 类型,编码必须是 utf-8、utf-16 或 ascii 之一。

文件格式 MIME 类型
.c text/x-c
.cs text/x-csharp
.cpp text/x-c++
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.html text/html
.java text/x-java
.json application/json
.md text/markdown
.pdf 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
.js text/javascript
.sh application/x-sh
.ts application/typescript
.csv application/csv
.jpeg image/jpeg
.jpg image/jpeg
.gif image/gif
.png image/png
.tar application/x-tar
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml application/xml or "text/xml"
.zip application/zip

相关文章
|
1月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
372 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
1月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
196 11
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
1月前
|
人工智能 机器人 测试技术
AI写的代码为何金玉其外败絮其中
本文分析AI编码看着好看其实很烂的现象、原因,探索行之有效的的解决方案。并从理论上延伸到如何更好的与AI协作的方式上。
75 3
|
2月前
|
人工智能 测试技术 开发工具
如何将 AI 代码采纳率从30%提升到80%?
AI编码采纳率低的根本原因在于人类期望其独立完成模糊需求,本文提出了解决之道,讲解如何通过结构化文档和任务拆解提高AI的基础可靠性。
943 24
|
1月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1385 34
|
1月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
382 24
|
1月前
|
数据采集 人工智能 JSON
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
Prompt 工程实战:如何让 AI 生成高质量的 aiohttp 异步爬虫代码
|
2月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
424 7
|
2月前
|
存储 人工智能 数据可视化
企业级 AI 模型无代码落地指南:基于阿里云工具链,从 0 到 1 实现业务价值
某汽车零部件厂商通过阿里云PAI、OSS等工具,实现无代码AI质检落地:仅用控制台操作完成数据治理到部署,质检效率提升3倍,模型周期从2月缩至2周。本文详解全栈可视化方案,助力企业零代码落地AI。
331 1

热门文章

最新文章