2026年4月26日 2 分钟阅读

GPT-5.5 Agentic UX 实战:让 AI 智能体在执行任务时”开口说话”

tinyash 0 条评论

OpenAI 在发布 GPT-5.5 的同时,悄悄带来了一个对开发者非常有价值的 UX 建议:pre-tool-call 状态更新。这个模式能让你的 AI 智能体在执行多步骤任务时,不再让用户面对一个”沉默的光标”。

问题:AI 智能体的”沉默焦虑”

你有没有遇到过这种情况:在 ChatGPT 或 Codex 里提交了一个复杂任务,然后界面就一动不动了。模型可能在后台调用了多个工具、执行了多步推理,但用户看到的只是一个闪烁的光标。

这种”沉默焦虑”是 agentic AI 应用中最常见的 UX 问题之一。用户不知道模型是在思考、在卡住、还是在崩溃。

OpenAI 在 GPT-5.5 的官方提示指南中,明确推荐了一种解决方案。

解决方案:Pre-Tool-Call 状态更新

核心思路很简单:在任何多步骤任务的工具调用之前,先发一条简短的用户可见消息,确认请求并说明第一步动作。

保持一到两句话即可。OpenAI 的 Codex 应用已经在使用这个模式,效果显著。

代码示例:基础实现

以 Python + OpenAI API 为例:

from openai import OpenAI

client = OpenAI()

def run_agentic_task(user_query: str):
    # 第一步:立即回复用户,告知已开始处理
    initial_response = client.chat.completions.create(
        model="gpt-5.5",
        messages=[
            {"role": "system", "content": "你是代码审查助手。收到任务后,先告诉用户你准备做什么,然后再执行。"},
            {"role": "user", "content": user_query},
        ],
        # 使用低 verbosity 让初始回复简洁
        verbosity="low",
    )
    
    # 将初始回复立即展示给用户
    print(initial_response.choices[0].message.content)
    
    # 然后执行实际的多步骤工具调用
    full_response = client.chat.completions.create(
        model="gpt-5.5",
        messages=[
            {"role": "system", "content": "你是代码审查助手。"},
            {"role": "user", "content": user_query},
        ],
        tools=[...],  # 你的工具定义
    )
    
    return full_response

关键:GPT-5.5 的 verbosity 参数

GPT-5.5 引入了一个新的 API 参数 verbosity,可以控制模型输出的详细程度:

# 低 verbosity:适合状态更新和简短回复
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=messages,
    verbosity="low",  # low / medium / high
)

三个值的含义:

  • low:简洁输出,适合状态确认、简短回复
  • medium:默认平衡,适合一般对话
  • high:详细输出,适合需要深度解释的场景

在 pre-tool-call 场景下,low 是最佳选择——一条简洁的”我正在分析你的代码库,首先检查类型定义”比一大段文字更有用。

在 Stream 模式下的实现

对于需要实时反馈的应用,结合 streaming 和 pre-tool-call 模式效果最好:

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI()

async def agentic_workflow_with_status(user_query: str):
    # 先发送即时状态更新
    status_stream = client.chat.completions.create(
        model="gpt-5.5",
        messages=[
            {"role": "system", "content": "简洁回复,1-2句话。告诉用户你接下来要做什么。"},
            {"role": "user", "content": user_query},
        ],
        verbosity="low",
        stream=True,
    )
    
    # 立即流式输出状态更新
    async for chunk in status_stream:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
    
    print()  # 换行
    
    # 然后执行真正的工具调用流程
    task_stream = client.chat.completions.create(
        model="gpt-5.5",
        messages=[
            {"role": "system", "content": "执行代码审查任务。"},
            {"role": "user", "content": user_query},
        ],
        tools=tools,
        stream=True,
    )
    
    async for chunk in task_stream:
        # 处理工具调用和最终结果
        ...

实际场景:代码审查智能体

以一个实际的代码审查智能体为例,展示完整的 pre-tool-call 模式:

class CodeReviewAgent:
    def __init__(self):
        self.client = OpenAI()
        self.status_template = "🔍 正在审查 {file_count} 个文件,首先检查 {focus_area}..."
    
    async def review(self, files: list[str]):
        # 1. 立即发送状态更新
        status_msg = self.status_template.format(
            file_count=len(files),
            focus_area="类型安全和错误处理"
        )
        yield {"type": "status", "message": status_msg}
        
        # 2. 执行实际的审查工具调用
        for file in files:
            yield {"type": "status", "message": f"📄 正在审查 {file}..."}
            
            result = self.client.chat.completions.create(
                model="gpt-5.5",
                messages=[
                    {"role": "system", "content": self._get_review_prompt()},
                    {"role": "user", "content": self._read_file(file)},
                ],
                tools=[self.get_lint_tool(), self.get_test_tool()],
                verbosity="medium",
            )
            
            yield {"type": "review", "file": file, "result": result}

GPT-5.5 迁移注意事项

OpenAI 在官方指南中给出了一个关键建议:

“将 GPT-5.5 视为一个新的模型家族来调优,而不是 gpt-5.2 或 gpt-5.4 的直接替代品。”

这意味着:

  1. 从新的 baseline 开始:不要直接携带旧 prompt 的所有指令
  2. 从最小 prompt 开始:保留产品契约所需的最小提示,然后逐步调优
  3. 逐一调整参数:reasoning effort、verbosity、工具描述和输出格式都需要重新验证

迁移检查清单

# 旧代码(GPT-5.4)
response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "你是一个详细的代码助手。请用中文回答所有问题。提供完整的代码示例和解释。"},
        {"role": "user", "content": query},
    ],
)

# 迁移后(GPT-5.5)
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[
        {"role": "system", "content": "代码助手。"},  # 最小化 system prompt
        {"role": "user", "content": query},
    ],
    verbosity="medium",  # 显式控制输出详细程度
)

OpenAI 甚至提供了一个 Codex 技能来辅助迁移:

openai-docs migrate this project to gpt-5.5

这个命令会自动分析你的代码,并根据 OpenAI 官方升级指南给出修改建议。

为什么这个模式重要

pre-tool-call 状态更新看似简单,但它解决的是 agentic AI 应用中最核心的信任问题:

  • 透明度:用户知道系统在工作,而不是卡住了
  • 预期管理:用户了解即将发生什么,减少焦虑
  • 可中断性:如果方向不对,用户可以尽早干预

在 GPT-5.5 强化了 agentic coding 和 computer use 能力的背景下,这个模式变得更加重要——因为模型会执行更复杂的多步骤任务,用户的等待时间也更长。

总结

GPT-5.5 的 pre-tool-call 状态更新模式是一个小而实用的 UX 改进:

  1. 在多步骤任务开始前,先发一条简短的状态消息
  2. 使用 verbosity="low" 控制初始回复的简洁度
  3. 结合 streaming 实现即时反馈
  4. 迁移到 GPT-5.5 时,从最小 prompt 开始重新调优

对于构建 agentic 应用的开发者来说,这是 GPT-5.5 最值得关注的 UX 改进之一。


参考资料:OpenAI GPT-5.5 提示指南OpenAI 使用 GPT-5.5 指南GPT-5.5 新参数和工具

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。