| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # !/usr/bin/ python
- # -*- coding: utf-8 -*-
- '''
- @Project : lq-agent-api
- @File :model_generate.py
- @IDE :PyCharm
- @Author :
- @Date :2025/7/14 14:22
- '''
- from langchain_core.prompts import ChatPromptTemplate
- from foundation.utils.utils import get_models
- from foundation.logger.loggering import server_logger as logger
- class GenerateModelClient:
- """
- 主要是生成式模型
- """
- def __init__(self):
- # 获取部署的模型列表
- llm, chat, embed = get_models()
- self.llm = llm
- self.chat = chat
- async def get_model_generate_invoke(self, trace_id, task_prompt_info: dict):
- """
- 模型非流式生成(异步)
- """
- prompt_template = task_prompt_info["task_prompt"]
- # 直接格式化消息,不需要额外的invoke步骤
- messages = prompt_template.format_messages()
- # 使用异步方法调用模型,避免阻塞事件循环
- import asyncio
- loop = asyncio.get_event_loop()
- response = await loop.run_in_executor(None, self.llm.invoke, messages)
- # logger.info(f"[模型生成结果]: {response.content}")
- return response.content
- def get_model_generate_stream(self, trace_id, task_prompt_info: dict):
- """
- 模型流式生成(异步)
- """
- prompt_template = task_prompt_info["task_prompt"]
- # 直接格式化消息,不需要额外的invoke步骤 stream
- messages = prompt_template.format_messages()
- response = self.llm.stream(messages)
- for chunk in response:
- yield chunk.content
- generate_model_client = GenerateModelClient()
|