60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
from langchain_openai import ChatOpenAI
|
||
from tenacity import retry, stop_after_attempt, wait_exponential
|
||
from .config import settings
|
||
|
||
|
||
def get_llm(temperature: float = 0.1) -> ChatOpenAI:
|
||
"""获取 LLM 客户端(DeepSeek 或 Qwen,均兼容 OpenAI API)"""
|
||
if settings.llm_provider == "deepseek":
|
||
return ChatOpenAI(
|
||
model=settings.deepseek_model,
|
||
api_key=settings.deepseek_api_key,
|
||
base_url="https://api.deepseek.com/v1",
|
||
temperature=temperature,
|
||
max_retries=3,
|
||
timeout=120,
|
||
)
|
||
elif settings.llm_provider == "qwen":
|
||
return ChatOpenAI(
|
||
model=settings.qwen_model,
|
||
api_key=settings.dashscope_api_key,
|
||
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
|
||
temperature=temperature,
|
||
max_retries=3,
|
||
timeout=120,
|
||
)
|
||
raise ValueError(f"不支持的 LLM 提供商:{settings.llm_provider}")
|
||
|
||
|
||
RAG_SYSTEM_PROMPT = """你是一位专业的汽车行业合规专家,具备深厚的法规知识(GB标准、UN-ECE、ISO 45001、IATF 16949等)。
|
||
|
||
回答规则:
|
||
1. 仅基于提供的参考文献回答,不添加不在文献中的信息
|
||
2. 每个关键陈述必须标注来源,优先使用条款号格式:【法规名称·第X条】
|
||
若无条款号则使用:【法规名称·页码X】
|
||
3. 如果参考文献不足以回答问题,明确说明
|
||
4. 使用专业但清晰的语言,适合工程师和法务人员阅读
|
||
5. 对于数值要求(如绝缘电阻值、时间限制等),精确引用原文
|
||
|
||
引用格式示例:根据《道路运输车辆动态监督管理办法》【第十五条】规定,道路运输经营者应当……"""
|
||
|
||
|
||
COMPLIANCE_CHECK_PROMPT = """你是一位专业的汽车合规审查专家。
|
||
|
||
请对以下内容进行合规性评估:
|
||
|
||
【待审查内容】
|
||
{content}
|
||
|
||
【相关法规要求】
|
||
{regulations}
|
||
|
||
请按以下格式输出:
|
||
1. 整体风险等级:[low/medium/high/critical]
|
||
2. 风险分数:[0-100]
|
||
3. 发现的合规问题(逐条列出):
|
||
- 问题描述
|
||
- 违反的具体法规条款
|
||
- 严重程度
|
||
4. 整改建议(具体可操作)"""
|