A2UI 使用坑点

1. 在哪里设置key

在sample的项目包中,将.env.example修改为.env

2. UnicodeDecodeError: 'gbk' codec can't decode byte 0x86 in position 211: illegal multibyte sequence

  • 文件编码问题:你正在读取的文件包含了非GBK编码的字符(0x86可能是UTF-8或ISO-8859-1等编码中的字符)

  • 系统默认编码:Windows系统默认使用GBK编码,但数据文件可能是UTF-8或其他编码格式

修改:添加 encoding='utf-8'

3. 如果你没有gemini的key,也不方便充值,可以使用deepseek-chat模型

# Copy this file to .env and fill in your API key

OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxx

OPENAI_MODEL=openai/deepseek-chat
# 记得使用deepseek-chat,
# 如果使用deepseek-reasoner会报错
#   ERROR:a2a.server.apps.jsonrpc.jsonrpc_app:Request Error (ID: 2): Code=-32603, Message='litellm.BadRequestError: OpenAIException - thinking is enabled but reasoning_content is missing in assistant tool call message at index 2'
# 注意:deepseek-reasoner 推理模型需要 reasoning_content 字段,当前不支持

OPENAI_BASE_URL=https://api.deepseek.com

  def _build_agent(self, use_ui: bool) -> LlmAgent:
    """Builds the LLM agent for the restaurant agent."""
    # 优先使用 OpenAI 环境变量,其次使用 LITELLM_MODEL,最后使用默认值的gemini
    if os.getenv("OPENAI_MODEL"):
      LITELLM_MODEL = os.getenv("OPENAI_MODEL")
    else:
      LITELLM_MODEL = os.getenv("LITELLM_MODEL", "gemini/gemini-2.5-flash")

    # 获取 OpenAI Base URL(如果设置了)
    openai_base_url = os.getenv("OPENAI_BASE_URL")

    instruction = (
        self._schema_manager.generate_system_prompt(
            role_description=ROLE_DESCRIPTION,
            workflow_description=WORKFLOW_DESCRIPTION,
            ui_description=UI_DESCRIPTION,
            include_schema=True,
            include_examples=True,
            validate_examples=True,
        )
        if use_ui
        else get_text_prompt()
    )

    # 配置 LiteLlm 模型,如果设置了 OPENAI_BASE_URL 则使用它
    lite_llm_kwargs = {"model": LITELLM_MODEL}
    if openai_base_url:
      lite_llm_kwargs["api_base"] = openai_base_url

    return LlmAgent(
        model=LiteLlm(**lite_llm_kwargs),
        name="restaurant_agent",
        description="An agent that finds restaurants and helps book tables.",
        instruction=instruction,
        tools=[get_restaurants],
    )

因为虽然代码没有显式读取 OPENAI_API_KEY,但 LiteLlm 库会自动从环境变量中读取它。
当 .env 文件被加载后,OPENAI_API_KEY 就存在于环境变量中。LiteLlm 在发起请求时会自动读取 OPENAI_API_KEY 环境变量来认证。
所以你需要在 . OPENAI_API_KEYenv 中设置,代码本身不需要显式读取它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值