This commit is contained in:
Hugo SEQUIER 2026-05-27 16:05:26 +02:00 committed by GitHub
commit dafe2f428e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 62 additions and 20 deletions

View File

@ -1,9 +1,17 @@
# LLM API配置支持 OpenAI SDK 格式的任意 LLM API # ===== OpenRouter 配置(后备 LLM未设置 LLM_API_KEY 时自动使用)=====
# 推荐使用阿里百炼平台qwen-plus模型https://bailian.console.aliyun.com/ # OpenRouter 聚合了数百种模型注册获取API Keyhttps://openrouter.ai/
# 注意消耗较大可先进行小于40轮的模拟尝试 OPENROUTER_API_KEY=sk-or-v1-your_openrouter_key_here
LLM_API_KEY=your_api_key_here OPENROUTER_MODEL_NAME=anthropic/claude-sonnet-4
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 # 默认值,一般无需修改
LLM_MODEL_NAME=qwen-plus # OPENROUTER_REFERER=https://github.com/MiroFish # 默认值,一般无需修改
# OPENROUTER_TITLE=MiroFish # 默认值,一般无需修改
# ===== LLM API 配置(可选,优先级高于 OpenRouter=====
# 支持 OpenAI SDK 格式的任意 LLM API如阿里百炼平台
# 如果设置了以下配置,将覆盖 OpenRouter 配置
# LLM_API_KEY=your_api_key_here
# LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
# LLM_MODEL_NAME=qwen-plus
# ===== ZEP记忆图谱配置 ===== # ===== ZEP记忆图谱配置 =====
# 每月免费额度即可支撑简单使用https://app.getzep.com/ # 每月免费额度即可支撑简单使用https://app.getzep.com/

View File

@ -27,10 +27,17 @@ class Config:
# JSON配置 - 禁用ASCII转义让中文直接显示而不是 \uXXXX 格式) # JSON配置 - 禁用ASCII转义让中文直接显示而不是 \uXXXX 格式)
JSON_AS_ASCII = False JSON_AS_ASCII = False
# LLM配置统一使用OpenAI格式 # OpenRouter配置作为LLM的后备方案
LLM_API_KEY = os.environ.get('LLM_API_KEY') OPENROUTER_API_KEY = os.environ.get('OPENROUTER_API_KEY')
LLM_BASE_URL = os.environ.get('LLM_BASE_URL', 'https://api.openai.com/v1') OPENROUTER_BASE_URL = os.environ.get('OPENROUTER_BASE_URL', 'https://openrouter.ai/api/v1')
LLM_MODEL_NAME = os.environ.get('LLM_MODEL_NAME', 'gpt-4o-mini') OPENROUTER_MODEL_NAME = os.environ.get('OPENROUTER_MODEL_NAME', 'anthropic/claude-sonnet-4')
OPENROUTER_REFERER = os.environ.get('OPENROUTER_REFERER', 'https://github.com/MiroFish')
OPENROUTER_TITLE = os.environ.get('OPENROUTER_TITLE', 'MiroFish')
# LLM配置优先使用LLM_*未设置则回退到OpenRouter
LLM_API_KEY = os.environ.get('LLM_API_KEY') or OPENROUTER_API_KEY
LLM_BASE_URL = os.environ.get('LLM_BASE_URL') or OPENROUTER_BASE_URL
LLM_MODEL_NAME = os.environ.get('LLM_MODEL_NAME') or OPENROUTER_MODEL_NAME
# Zep配置 # Zep配置
ZEP_API_KEY = os.environ.get('ZEP_API_KEY') ZEP_API_KEY = os.environ.get('ZEP_API_KEY')
@ -68,7 +75,7 @@ class Config:
"""验证必要配置""" """验证必要配置"""
errors: list[str] = [] errors: list[str] = []
if not cls.LLM_API_KEY: if not cls.LLM_API_KEY:
errors.append("LLM_API_KEY 未配置") errors.append("LLM_API_KEY 或 OPENROUTER_API_KEY 未配置")
if not cls.ZEP_API_KEY: if not cls.ZEP_API_KEY:
errors.append("ZEP_API_KEY 未配置") errors.append("ZEP_API_KEY 未配置")
return errors return errors

View File

@ -193,9 +193,18 @@ class OasisProfileGenerator:
if not self.api_key: if not self.api_key:
raise ValueError("LLM_API_KEY 未配置") raise ValueError("LLM_API_KEY 未配置")
# OpenRouter兼容自动检测并添加推荐的额外请求头
extra_kwargs = {}
if self.base_url and 'openrouter.ai' in self.base_url:
extra_kwargs['default_headers'] = {
'HTTP-Referer': Config.OPENROUTER_REFERER,
'X-Title': Config.OPENROUTER_TITLE,
}
self.client = OpenAI( self.client = OpenAI(
api_key=self.api_key, api_key=self.api_key,
base_url=self.base_url base_url=self.base_url,
**extra_kwargs
) )
# Zep客户端用于检索丰富上下文 # Zep客户端用于检索丰富上下文

View File

@ -235,9 +235,18 @@ class SimulationConfigGenerator:
if not self.api_key: if not self.api_key:
raise ValueError("LLM_API_KEY 未配置") raise ValueError("LLM_API_KEY 未配置")
# OpenRouter兼容自动检测并添加推荐的额外请求头
extra_kwargs = {}
if self.base_url and 'openrouter.ai' in self.base_url:
extra_kwargs['default_headers'] = {
'HTTP-Referer': Config.OPENROUTER_REFERER,
'X-Title': Config.OPENROUTER_TITLE,
}
self.client = OpenAI( self.client = OpenAI(
api_key=self.api_key, api_key=self.api_key,
base_url=self.base_url base_url=self.base_url,
**extra_kwargs
) )
def generate_config( def generate_config(

View File

@ -27,9 +27,18 @@ class LLMClient:
if not self.api_key: if not self.api_key:
raise ValueError("LLM_API_KEY 未配置") raise ValueError("LLM_API_KEY 未配置")
# OpenRouter兼容自动检测并添加推荐的额外请求头
extra_kwargs = {}
if self.base_url and 'openrouter.ai' in self.base_url:
extra_kwargs['default_headers'] = {
'HTTP-Referer': Config.OPENROUTER_REFERER,
'X-Title': Config.OPENROUTER_TITLE,
}
self.client = OpenAI( self.client = OpenAI(
api_key=self.api_key, api_key=self.api_key,
base_url=self.base_url base_url=self.base_url,
**extra_kwargs
) )
def chat( def chat(