Spaces:
Sleeping
Sleeping
| import json | |
| import os | |
| from langchain_openai import ChatOpenAI | |
| from prompts import DISCLOSURE_EVAL_PROMPT | |
| class DisclosureEvaluator: | |
| def __init__(self): | |
| self.llm = ChatOpenAI( | |
| model="qwen-turbo", | |
| base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", | |
| api_key=os.getenv("DASHSCOPE_API_KEY"), | |
| temperature=0.0, | |
| max_tokens=256, | |
| ) | |
| def evaluate_disclosure(self, user_message, max_retries=2): | |
| prompt = DISCLOSURE_EVAL_PROMPT.replace("{user_message}", user_message) | |
| for attempt in range(max_retries + 1): | |
| try: | |
| llm_message = self.llm.invoke(prompt) | |
| content = llm_message.content.strip() | |
| start = content.find("{") | |
| end = content.rfind("}") + 1 | |
| result = json.loads(content[start:end]) | |
| return { | |
| "score": max(1, min(10, int(result.get("score", 1)))), | |
| "dimensions": result.get("dimensions", {}), | |
| "reasoning": result.get("reasoning", ""), | |
| } | |
| except (json.JSONDecodeError, ValueError): | |
| if attempt < max_retries: | |
| continue # 再试一次 | |
| return {"score": 1, "dimensions": {}, "reasoning": "评估解析失败"} | |