fix current_date

This commit is contained in:
jxxghp
2026-03-27 21:55:09 +08:00
parent aaeb4d2634
commit f859d99d91
2 changed files with 36 additions and 35 deletions
+33 -34
View File
@@ -1,7 +1,6 @@
import asyncio import asyncio
import traceback import traceback
import uuid import uuid
from time import strftime
from dataclasses import dataclass from dataclasses import dataclass
from typing import Callable, Dict, List, Optional from typing import Callable, Dict, List, Optional
@@ -42,12 +41,12 @@ class MoviePilotAgent:
""" """
def __init__( def __init__(
self, self,
session_id: str, session_id: str,
user_id: str = None, user_id: str = None,
channel: str = None, channel: str = None,
source: str = None, source: str = None,
username: str = None, username: str = None,
): ):
self.session_id = session_id self.session_id = session_id
self.user_id = user_id self.user_id = user_id
@@ -92,10 +91,10 @@ class MoviePilotAgent:
if block.get("thought"): if block.get("thought"):
continue continue
if block.get("type") in ( if block.get("type") in (
"thinking", "thinking",
"reasoning_content", "reasoning_content",
"reasoning", "reasoning",
"thought", "thought",
): ):
continue continue
if block.get("type") == "text": if block.get("type") == "text":
@@ -126,7 +125,7 @@ class MoviePilotAgent:
# 系统提示词 # 系统提示词
system_prompt = prompt_manager.get_agent_prompt( system_prompt = prompt_manager.get_agent_prompt(
channel=self.channel channel=self.channel
).format(current_date=strftime("%Y-%m-%d")) )
# LLM 模型(用于 agent 执行) # LLM 模型(用于 agent 执行)
llm = self._initialize_llm() llm = self._initialize_llm()
@@ -201,7 +200,7 @@ class MoviePilotAgent:
return error_message return error_message
async def _stream_agent_tokens( async def _stream_agent_tokens(
self, agent, messages: dict, config: dict, on_token: Callable[[str], None] self, agent, messages: dict, config: dict, on_token: Callable[[str], None]
): ):
""" """
流式运行智能体,过滤工具调用token和思考内容,将模型生成的内容通过回调输出。 流式运行智能体,过滤工具调用token和思考内容,将模型生成的内容通过回调输出。
@@ -211,18 +210,18 @@ class MoviePilotAgent:
:param on_token: 收到有效 token 时的回调 :param on_token: 收到有效 token 时的回调
""" """
async for chunk in agent.astream( async for chunk in agent.astream(
messages, messages,
stream_mode="messages", stream_mode="messages",
config=config, config=config,
subgraphs=False, subgraphs=False,
version="v2", version="v2",
): ):
if chunk["type"] == "messages": if chunk["type"] == "messages":
token, metadata = chunk["data"] token, metadata = chunk["data"]
if ( if (
token token
and hasattr(token, "tool_call_chunks") and hasattr(token, "tool_call_chunks")
and not token.tool_call_chunks and not token.tool_call_chunks
): ):
# 跳过模型思考/推理内容(如 DeepSeek R1 的 reasoning_content # 跳过模型思考/推理内容(如 DeepSeek R1 的 reasoning_content
additional = getattr(token, "additional_kwargs", None) additional = getattr(token, "additional_kwargs", None)
@@ -423,13 +422,13 @@ class AgentManager:
self.active_agents.clear() self.active_agents.clear()
async def process_message( async def process_message(
self, self,
session_id: str, session_id: str,
user_id: str, user_id: str,
message: str, message: str,
channel: str = None, channel: str = None,
source: str = None, source: str = None,
username: str = None, username: str = None,
) -> str: ) -> str:
""" """
处理用户消息:将消息放入会话队列,按顺序依次处理。 处理用户消息:将消息放入会话队列,按顺序依次处理。
@@ -453,8 +452,8 @@ class AgentManager:
# 如果队列中已有等待的消息,通知用户消息已排队 # 如果队列中已有等待的消息,通知用户消息已排队
if queue_size > 0 or ( if queue_size > 0 or (
session_id in self._session_workers session_id in self._session_workers
and not self._session_workers[session_id].done() and not self._session_workers[session_id].done()
): ):
logger.info( logger.info(
f"会话 {session_id} 有任务正在处理,消息已排队等待 " f"会话 {session_id} 有任务正在处理,消息已排队等待 "
@@ -466,8 +465,8 @@ class AgentManager:
# 确保该会话有一个worker在运行 # 确保该会话有一个worker在运行
if ( if (
session_id not in self._session_workers session_id not in self._session_workers
or self._session_workers[session_id].done() or self._session_workers[session_id].done()
): ):
self._session_workers[session_id] = asyncio.create_task( self._session_workers[session_id] = asyncio.create_task(
self._session_worker(session_id) self._session_worker(session_id)
@@ -508,8 +507,8 @@ class AgentManager:
await self._session_workers.pop(session_id, None) await self._session_workers.pop(session_id, None)
# 如果队列为空,清理队列 # 如果队列为空,清理队列
if ( if (
session_id in self._session_queues session_id in self._session_queues
and self._session_queues[session_id].empty() and self._session_queues[session_id].empty()
): ):
self._session_queues.pop(session_id, None) self._session_queues.pop(session_id, None)
+3 -1
View File
@@ -1,6 +1,7 @@
"""提示词管理器""" """提示词管理器"""
from pathlib import Path from pathlib import Path
from time import strftime
from typing import Dict from typing import Dict
from app.core.config import settings from app.core.config import settings
@@ -81,7 +82,8 @@ class PromptManager:
# 始终替换占位符,避免后续 .format() 时因残留花括号报 KeyError # 始终替换占位符,避免后续 .format() 时因残留花括号报 KeyError
base_prompt = base_prompt.format( base_prompt = base_prompt.format(
markdown_spec=markdown_spec, markdown_spec=markdown_spec,
verbose_spec=verbose_spec verbose_spec=verbose_spec,
current_date=strftime("%Y-%m-%d")
) )
return base_prompt return base_prompt