2025-06-21 16:33:21 +08:00
|
|
|
|
"""
|
|
|
|
|
|
LLM 预设配置
|
|
|
|
|
|
|
|
|
|
|
|
提供常用的配置预设,特别是针对 Gemini 的高级功能。
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
from typing import Any
|
|
|
|
|
|
|
|
|
|
|
|
from .generation import LLMGenerationConfig
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CommonOverrides:
|
|
|
|
|
|
"""常用的配置覆盖预设"""
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def creative() -> LLMGenerationConfig:
|
|
|
|
|
|
"""创意模式:高温度,鼓励创新"""
|
|
|
|
|
|
return LLMGenerationConfig(temperature=0.9, top_p=0.95, frequency_penalty=0.1)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def precise() -> LLMGenerationConfig:
|
|
|
|
|
|
"""精确模式:低温度,确定性输出"""
|
|
|
|
|
|
return LLMGenerationConfig(temperature=0.1, top_p=0.9, frequency_penalty=0.0)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def balanced() -> LLMGenerationConfig:
|
|
|
|
|
|
"""平衡模式:中等温度"""
|
|
|
|
|
|
return LLMGenerationConfig(temperature=0.5, top_p=0.9, frequency_penalty=0.0)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def concise(max_tokens: int = 100) -> LLMGenerationConfig:
|
|
|
|
|
|
"""简洁模式:限制输出长度"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.3,
|
|
|
|
|
|
max_tokens=max_tokens,
|
|
|
|
|
|
stop=["\n\n", "。", "!", "?"],
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def detailed(max_tokens: int = 2000) -> LLMGenerationConfig:
|
|
|
|
|
|
"""详细模式:鼓励详细输出"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.7, max_tokens=max_tokens, frequency_penalty=-0.1
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_json() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini JSON模式:强制JSON输出"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.3, response_mime_type="application/json"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_thinking(budget: float = 0.8) -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 思考模式:使用思考预算"""
|
|
|
|
|
|
return LLMGenerationConfig(temperature=0.7, thinking_budget=budget)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_creative() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 创意模式:高温度创意输出"""
|
|
|
|
|
|
return LLMGenerationConfig(temperature=0.9, top_p=0.95)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_structured(schema: dict[str, Any]) -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 结构化输出:自定义JSON模式"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.3,
|
|
|
|
|
|
response_mime_type="application/json",
|
|
|
|
|
|
response_schema=schema,
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_safe() -> LLMGenerationConfig:
|
2025-07-08 11:15:15 +08:00
|
|
|
|
"""Gemini 安全模式:使用配置的安全设置"""
|
|
|
|
|
|
from .providers import get_gemini_safety_threshold
|
|
|
|
|
|
|
|
|
|
|
|
threshold = get_gemini_safety_threshold()
|
2025-06-21 16:33:21 +08:00
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.5,
|
|
|
|
|
|
safety_settings={
|
2025-07-08 11:15:15 +08:00
|
|
|
|
"HARM_CATEGORY_HARASSMENT": threshold,
|
|
|
|
|
|
"HARM_CATEGORY_HATE_SPEECH": threshold,
|
|
|
|
|
|
"HARM_CATEGORY_SEXUALLY_EXPLICIT": threshold,
|
|
|
|
|
|
"HARM_CATEGORY_DANGEROUS_CONTENT": threshold,
|
2025-06-21 16:33:21 +08:00
|
|
|
|
},
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_multimodal() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 多模态模式:优化多模态处理"""
|
|
|
|
|
|
return LLMGenerationConfig(temperature=0.6, max_tokens=2048, top_p=0.8)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_code_execution() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 代码执行模式:启用代码执行功能"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.3,
|
|
|
|
|
|
max_tokens=4096,
|
|
|
|
|
|
enable_code_execution=True,
|
|
|
|
|
|
custom_params={"code_execution_timeout": 30},
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_grounding() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 信息来源关联模式:启用Google搜索"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.5,
|
|
|
|
|
|
max_tokens=4096,
|
|
|
|
|
|
enable_grounding=True,
|
|
|
|
|
|
custom_params={
|
|
|
|
|
|
"grounding_config": {"dynamicRetrievalConfig": {"mode": "MODE_DYNAMIC"}}
|
|
|
|
|
|
},
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_cached() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 缓存模式:启用响应缓存"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.3,
|
|
|
|
|
|
max_tokens=2048,
|
|
|
|
|
|
enable_caching=True,
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_advanced() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 高级模式:启用所有高级功能"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.5,
|
|
|
|
|
|
max_tokens=4096,
|
|
|
|
|
|
enable_code_execution=True,
|
|
|
|
|
|
enable_grounding=True,
|
|
|
|
|
|
enable_caching=True,
|
|
|
|
|
|
custom_params={
|
|
|
|
|
|
"code_execution_timeout": 30,
|
|
|
|
|
|
"grounding_config": {
|
|
|
|
|
|
"dynamicRetrievalConfig": {"mode": "MODE_DYNAMIC"}
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_research() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 研究模式:思考+搜索+结构化输出"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.6,
|
|
|
|
|
|
max_tokens=4096,
|
|
|
|
|
|
thinking_budget=0.8,
|
|
|
|
|
|
enable_grounding=True,
|
|
|
|
|
|
response_mime_type="application/json",
|
|
|
|
|
|
custom_params={
|
|
|
|
|
|
"grounding_config": {"dynamicRetrievalConfig": {"mode": "MODE_DYNAMIC"}}
|
|
|
|
|
|
},
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_analysis() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 分析模式:深度思考+详细输出"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.4,
|
|
|
|
|
|
max_tokens=6000,
|
|
|
|
|
|
thinking_budget=0.9,
|
|
|
|
|
|
top_p=0.8,
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
def gemini_fast_response() -> LLMGenerationConfig:
|
|
|
|
|
|
"""Gemini 快速响应模式:低延迟+简洁输出"""
|
|
|
|
|
|
return LLMGenerationConfig(
|
|
|
|
|
|
temperature=0.3,
|
|
|
|
|
|
max_tokens=512,
|
|
|
|
|
|
top_p=0.8,
|
|
|
|
|
|
)
|