修复现成阻塞的问题。
This commit is contained in:
parent
d45dbd044c
commit
39cdaa4d75
@ -578,8 +578,8 @@ class LLMSignalAnalyzer:
|
|||||||
# 构建数据提示
|
# 构建数据提示
|
||||||
data_prompt = self._build_data_prompt(symbol, data, news_text, position_info, futures_data)
|
data_prompt = self._build_data_prompt(symbol, data, news_text, position_info, futures_data)
|
||||||
|
|
||||||
# 调用 LLM
|
# 调用 LLM(使用异步方法避免阻塞事件循环)
|
||||||
response = llm_service.chat([
|
response = await llm_service.achat([
|
||||||
{"role": "system", "content": system_prompt},
|
{"role": "system", "content": system_prompt},
|
||||||
{"role": "user", "content": data_prompt}
|
{"role": "user", "content": data_prompt}
|
||||||
], model_override=self.model_override)
|
], model_override=self.model_override)
|
||||||
@ -1719,8 +1719,8 @@ class LLMSignalAnalyzer:
|
|||||||
# 构建持仓分析提示
|
# 构建持仓分析提示
|
||||||
prompt = self._build_position_review_prompt(symbol, positions, data)
|
prompt = self._build_position_review_prompt(symbol, positions, data)
|
||||||
|
|
||||||
# 调用 LLM
|
# 调用 LLM(使用异步方法避免阻塞事件循环)
|
||||||
response = llm_service.chat([
|
response = await llm_service.achat([
|
||||||
{"role": "system", "content": self.POSITION_REVIEW_PROMPT},
|
{"role": "system", "content": self.POSITION_REVIEW_PROMPT},
|
||||||
{"role": "user", "content": prompt}
|
{"role": "user", "content": prompt}
|
||||||
], model_override=self.model_override)
|
], model_override=self.model_override)
|
||||||
|
|||||||
@ -1089,8 +1089,8 @@ class SignalAnalyzer:
|
|||||||
# 构建分析提示
|
# 构建分析提示
|
||||||
prompt = self._build_analysis_prompt(data, signal, symbol)
|
prompt = self._build_analysis_prompt(data, signal, symbol)
|
||||||
|
|
||||||
# 调用 LLM
|
# 调用 LLM(使用异步方法避免阻塞事件循环)
|
||||||
response = llm_service.chat([
|
response = await llm_service.achat([
|
||||||
{"role": "system", "content": self.CRYPTO_ANALYST_PROMPT},
|
{"role": "system", "content": self.CRYPTO_ANALYST_PROMPT},
|
||||||
{"role": "user", "content": prompt}
|
{"role": "user", "content": prompt}
|
||||||
])
|
])
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
LLM服务 - 兼容层,使用多模型服务
|
LLM服务 - 兼容层,使用多模型服务
|
||||||
"""
|
"""
|
||||||
|
import asyncio
|
||||||
from typing import Optional, List, Dict, Any
|
from typing import Optional, List, Dict, Any
|
||||||
from app.services.multi_llm_service import multi_llm_service
|
from app.services.multi_llm_service import multi_llm_service
|
||||||
from app.utils.logger import logger
|
from app.utils.logger import logger
|
||||||
@ -23,7 +24,7 @@ class LLMService:
|
|||||||
model_override: str = None
|
model_override: str = None
|
||||||
) -> Optional[str]:
|
) -> Optional[str]:
|
||||||
"""
|
"""
|
||||||
调用LLM进行对话
|
调用LLM进行对话(同步版本)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
messages: 消息列表
|
messages: 消息列表
|
||||||
@ -42,6 +43,39 @@ class LLMService:
|
|||||||
model_override=model_override
|
model_override=model_override
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def achat(
|
||||||
|
self,
|
||||||
|
messages: List[Dict[str, str]],
|
||||||
|
model: str = None,
|
||||||
|
temperature: float = 0.7,
|
||||||
|
max_tokens: int = 2000,
|
||||||
|
model_override: str = None
|
||||||
|
) -> Optional[str]:
|
||||||
|
"""
|
||||||
|
调用LLM进行对话(异步版本 - 不阻塞事件循环)
|
||||||
|
|
||||||
|
Args:
|
||||||
|
messages: 消息列表
|
||||||
|
model: 模型名称(已废弃,使用 model_override)
|
||||||
|
temperature: 温度参数
|
||||||
|
max_tokens: 最大token数
|
||||||
|
model_override: 指定使用的模型 (zhipu/deepseek)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
LLM响应文本
|
||||||
|
"""
|
||||||
|
# 在线程池中执行同步的 LLM 调用,避免阻塞事件循环
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
return await loop.run_in_executor(
|
||||||
|
None,
|
||||||
|
lambda: self.multi_service.chat(
|
||||||
|
messages=messages,
|
||||||
|
temperature=temperature,
|
||||||
|
max_tokens=max_tokens,
|
||||||
|
model_override=model_override
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def analyze_intent(self, user_message: str) -> Dict[str, Any]:
|
def analyze_intent(self, user_message: str) -> Dict[str, Any]:
|
||||||
"""使用LLM分析用户意图"""
|
"""使用LLM分析用户意图"""
|
||||||
return self.multi_service.analyze_intent(user_message)
|
return self.multi_service.analyze_intent(user_message)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user