import os from typing import Optional import openai from openai import OpenAI from pydantic import BaseModel, Field from common.log import log client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_BASE_URL")) class UserIntent(BaseModel): user_intent: Optional[str] = Field(description="判断的用户意图") basis: Optional[str] = Field(description="用户意图命中的原始录音文本") accept:Optional[bool] = Field(description="用户是否接受,是的话为 True,否的话 False") def openai_check_intent(chat:str): try: completion = client.beta.chat.completions.parse( model="gpt-4o-2024-08-06", messages=[ {"role": "system", "content": "你是一位经验丰富的电话录音质检员,你非常擅长通过通话记录,判断用户意图"}, {"role": "user", "content": chat}, ], response_format=UserIntent, ) math_reasoning = completion.choices[0].message if math_reasoning.refusal: return UserIntent(user_intent=math_reasoning.refusal, accept=False) else: return math_reasoning.parsed except Exception as e: log.error(e) return UserIntent(user_intent="openai请求失败", accept=False)