mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-07-08 18:02:01 +08:00
feat(agent): 新增AI_AGENT_VERBOSE开关,控制工具调用过程回复及提示词输出
This commit is contained in:
@@ -81,19 +81,21 @@ class MoviePilotAgent:
|
|||||||
"""
|
"""
|
||||||
if not content:
|
if not content:
|
||||||
return ""
|
return ""
|
||||||
if isinstance(content, str):
|
# 跳过思考/推理类型的内容块
|
||||||
return content
|
|
||||||
if isinstance(content, list):
|
if isinstance(content, list):
|
||||||
text_parts = []
|
text_parts = []
|
||||||
for block in content:
|
for block in content:
|
||||||
if isinstance(block, str):
|
if isinstance(block, str):
|
||||||
text_parts.append(block)
|
text_parts.append(block)
|
||||||
elif isinstance(block, dict):
|
elif isinstance(block, dict):
|
||||||
# 跳过思考/推理类型的内容块
|
# 优先检查 thought 标志(LangChain Google GenAI 方案)
|
||||||
|
if block.get("thought"):
|
||||||
|
continue
|
||||||
if block.get("type") in (
|
if block.get("type") in (
|
||||||
"thinking",
|
"thinking",
|
||||||
"reasoning_content",
|
"reasoning_content",
|
||||||
"reasoning",
|
"reasoning",
|
||||||
|
"thought",
|
||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
if block.get("type") == "text":
|
if block.get("type") == "text":
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
||||||
|
from app.core.config import settings
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.schemas import (
|
from app.schemas import (
|
||||||
ChannelCapability,
|
ChannelCapability,
|
||||||
@@ -73,6 +74,14 @@ class PromptManager:
|
|||||||
# 始终替换占位符,避免后续 .format() 时因残留花括号报 KeyError
|
# 始终替换占位符,避免后续 .format() 时因残留花括号报 KeyError
|
||||||
base_prompt = base_prompt.replace("{markdown_spec}", markdown_spec)
|
base_prompt = base_prompt.replace("{markdown_spec}", markdown_spec)
|
||||||
|
|
||||||
|
# 据 VERBOSE 开关动态调整提示词:关闭时要求避免工具调用前的废话
|
||||||
|
if not settings.AI_AGENT_VERBOSE:
|
||||||
|
base_prompt += (
|
||||||
|
"\n\n[Important Instruction] If you need to call a tool, DO NOT output any conversational "
|
||||||
|
"text or explanations before calling the tool. Call the tool directly without transitional "
|
||||||
|
"phrases like 'Let me check', 'I will look this up', etc."
|
||||||
|
)
|
||||||
|
|
||||||
return base_prompt
|
return base_prompt
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from pydantic import PrivateAttr
|
|||||||
|
|
||||||
from app.agent import StreamingHandler
|
from app.agent import StreamingHandler
|
||||||
from app.chain import ChainBase
|
from app.chain import ChainBase
|
||||||
|
from app.core.config import settings
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.schemas import Notification
|
from app.schemas import Notification
|
||||||
|
|
||||||
@@ -53,7 +54,7 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta):
|
|||||||
if explanation:
|
if explanation:
|
||||||
tool_message = explanation
|
tool_message = explanation
|
||||||
|
|
||||||
if not is_background:
|
if not is_background and settings.AI_AGENT_VERBOSE:
|
||||||
# 非后台模式:发送工具执行过程消息
|
# 非后台模式:发送工具执行过程消息
|
||||||
if self._stream_handler and self._stream_handler.is_streaming:
|
if self._stream_handler and self._stream_handler.is_streaming:
|
||||||
# 流式渠道:工具消息直接追加到 buffer 中,与 Agent 文字合并为同一条流式消息
|
# 流式渠道:工具消息直接追加到 buffer 中,与 Agent 文字合并为同一条流式消息
|
||||||
|
|||||||
@@ -531,6 +531,8 @@ class ConfigModel(BaseModel):
|
|||||||
LLM_MAX_TOOLS: int = 0
|
LLM_MAX_TOOLS: int = 0
|
||||||
# AI智能体定时任务检查间隔(小时),0为不启用,默认24小时
|
# AI智能体定时任务检查间隔(小时),0为不启用,默认24小时
|
||||||
AI_AGENT_JOB_INTERVAL: int = 0
|
AI_AGENT_JOB_INTERVAL: int = 0
|
||||||
|
# AI智能体啰嗦模式,开启后会回复工具调用过程
|
||||||
|
AI_AGENT_VERBOSE: bool = False
|
||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings, ConfigModel, LogConfigModel):
|
class Settings(BaseSettings, ConfigModel, LogConfigModel):
|
||||||
|
|||||||
Reference in New Issue
Block a user