'''
非聊天模型类,继承自 LLM_Model_Base

author: DrGraph
date: 2025-11-20
'''
from loguru import logger
from langchain_openai import OpenAI
from langchain_core.messages import AIMessage
from DrGraph.utils.Constant import Constant
from LLM.llm_model_base import LLM_Model_Base


class NonChat_LLM(LLM_Model_Base):
    '''
    非聊天模型类，继承自 LLM_Model_Base，调用这个非聊天模型OpenAI
    - 语言模型名称， 缺省为"gpt-4o-mini"
    - 温度，缺省为0.7
    - 语言模型名称 = "非聊天模型"， 在人机界面中显示
    '''
    def __init__(self, model_name: str = "gpt-4o-mini", temperature: float = 0.7):
        super().__init__(model_name, temperature)
        self.name = '非聊天模型'
        self.mode = Constant.LLM_MODE_NONCHAT
        self.llmModel = OpenAI(
            model_name=self.model_name,
            temperature=self.temperature,
        )
    # 返回消息格式，以便在chatbot中显示
    def invoke(self, prompt: str):
        '''
        调用非聊天模型，返回消息格式，以便在chatbot中显示
        prompt: 用户输入，为字符串类型
        return: 助手回复，为字符串类型
        '''
        logger.info(f"{self.name} >>> 1.1 用户输入: {type(prompt)}")
        try:
            response = self.llmModel.invoke(prompt)
            logger.info(f"{self.name} >>> 1.2 助手回复: {type(response)}")
        except Exception as e:
            logger.error(e)
        return response
    
    