fix: pass api_key/base_url via model_config_dict, not env vars
camel-ai v0.2.78 reads OPENAI_API_KEY from env and auto-passes it to chat.completions.create() which doesn't accept it (TypeError). Fix: pass api_key and base_url through model_config_dict so camel-ai extracts them for the OpenAI client constructor only.
This commit is contained in:
@@ -1019,25 +1019,24 @@ def create_model(config: Dict[str, Any], use_boost: bool = False):
|
||||
if not llm_model:
|
||||
llm_model = config.get("llm_model", "gpt-4o-mini")
|
||||
|
||||
# 设置 camel-ai 所需的环境变量
|
||||
if llm_api_key:
|
||||
os.environ["OPENAI_API_KEY"] = llm_api_key
|
||||
|
||||
if not os.environ.get("OPENAI_API_KEY"):
|
||||
raise ValueError("缺少 API Key 配置,请在项目根目录 .env 文件中设置 LLM_API_KEY")
|
||||
|
||||
if llm_base_url:
|
||||
os.environ["OPENAI_BASE_URL"] = llm_base_url
|
||||
if not llm_api_key:
|
||||
raise ValueError("LLM_API_KEY not configured. Set it in .env file.")
|
||||
|
||||
print(f"{config_label} model={llm_model}, base_url={llm_base_url[:40] if llm_base_url else '默认'}...")
|
||||
|
||||
# camel-ai reads OPENAI_API_KEY from env automatically
|
||||
# For base_url, we must also set it as env var
|
||||
# (model_config_dict passes values to create() call, not client constructor)
|
||||
# Pass api_key and base_url via model_config_dict
|
||||
# camel-ai extracts these for the OpenAI client constructor
|
||||
model_config = {}
|
||||
if llm_api_key:
|
||||
model_config["api_key"] = llm_api_key
|
||||
if llm_base_url:
|
||||
model_config["base_url"] = llm_base_url
|
||||
|
||||
return ModelFactory.create(
|
||||
model_platform=ModelPlatformType.OPENAI,
|
||||
model_type=llm_model,
|
||||
model_config_dict=model_config,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -449,23 +449,23 @@ class RedditSimulationRunner:
|
||||
if not llm_model:
|
||||
llm_model = self.config.get("llm_model", "gpt-4o-mini")
|
||||
|
||||
# 设置 camel-ai 所需的环境变量
|
||||
if llm_api_key:
|
||||
os.environ["OPENAI_API_KEY"] = llm_api_key
|
||||
|
||||
if not os.environ.get("OPENAI_API_KEY"):
|
||||
raise ValueError("缺少 API Key 配置,请在项目根目录 .env 文件中设置 LLM_API_KEY")
|
||||
|
||||
if llm_base_url:
|
||||
os.environ["OPENAI_BASE_URL"] = llm_base_url
|
||||
if not llm_api_key:
|
||||
raise ValueError("LLM_API_KEY not configured. Set it in .env file.")
|
||||
|
||||
print(f"LLM配置: model={llm_model}, base_url={llm_base_url[:40] if llm_base_url else '默认'}...")
|
||||
|
||||
# camel-ai reads OPENAI_API_KEY from env automatically
|
||||
# Pass api_key and base_url via model_config_dict
|
||||
# camel-ai extracts these for the OpenAI client constructor
|
||||
model_config = {}
|
||||
if llm_api_key:
|
||||
model_config["api_key"] = llm_api_key
|
||||
if llm_base_url:
|
||||
model_config["base_url"] = llm_base_url
|
||||
|
||||
return ModelFactory.create(
|
||||
model_platform=ModelPlatformType.OPENAI,
|
||||
model_type=llm_model,
|
||||
model_config_dict=model_config,
|
||||
)
|
||||
|
||||
def _get_active_agents_for_round(
|
||||
|
||||
@@ -442,23 +442,23 @@ class TwitterSimulationRunner:
|
||||
if not llm_model:
|
||||
llm_model = self.config.get("llm_model", "gpt-4o-mini")
|
||||
|
||||
# 设置 camel-ai 所需的环境变量
|
||||
if llm_api_key:
|
||||
os.environ["OPENAI_API_KEY"] = llm_api_key
|
||||
|
||||
if not os.environ.get("OPENAI_API_KEY"):
|
||||
raise ValueError("缺少 API Key 配置,请在项目根目录 .env 文件中设置 LLM_API_KEY")
|
||||
|
||||
if llm_base_url:
|
||||
os.environ["OPENAI_BASE_URL"] = llm_base_url
|
||||
if not llm_api_key:
|
||||
raise ValueError("LLM_API_KEY not configured. Set it in .env file.")
|
||||
|
||||
print(f"LLM配置: model={llm_model}, base_url={llm_base_url[:40] if llm_base_url else '默认'}...")
|
||||
|
||||
# camel-ai reads OPENAI_API_KEY from env automatically
|
||||
# Pass api_key and base_url via model_config_dict
|
||||
# camel-ai extracts these for the OpenAI client constructor
|
||||
model_config = {}
|
||||
if llm_api_key:
|
||||
model_config["api_key"] = llm_api_key
|
||||
if llm_base_url:
|
||||
model_config["base_url"] = llm_base_url
|
||||
|
||||
return ModelFactory.create(
|
||||
model_platform=ModelPlatformType.OPENAI,
|
||||
model_type=llm_model,
|
||||
model_config_dict=model_config,
|
||||
)
|
||||
|
||||
def _get_active_agents_for_round(
|
||||
|
||||
Reference in New Issue
Block a user