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 中设置,代码本身不需要显式读取它。
1402

被折叠的 条评论
为什么被折叠?



