fix:优化Agent消息发送格式

This commit is contained in:
jxxghp
2025-11-17 10:43:16 +08:00
parent e2eef8ff21
commit 62543dd171
4 changed files with 179 additions and 10 deletions

View File

@@ -209,7 +209,7 @@ class MoviePilotAgent:
# 构建输入上下文
input_context = {
"system_prompt": self.prompt_manager.get_agent_prompt(),
"system_prompt": self.prompt_manager.get_agent_prompt(channel=self.channel),
"input": message
}

View File

@@ -73,6 +73,15 @@ You have access to the following tools for media management:
- Include relevant details about media content (title, year, type, etc.)
- Explain the results of tool operations clearly
### Message Format Requirements
When formatting your responses, please follow the format requirements for the current message channel. The system will automatically inform you of the specific format requirements based on the channel (Telegram, WeChat, Slack, etc.).
**General Guidelines:**
- Use appropriate Markdown formatting based on the channel requirements
- Keep formatting simple and clear
- Avoid complex nested formatting
- Ensure special characters are properly handled according to channel specifications
## Important Notes
- Always confirm user intent before performing download operations

View File

@@ -40,9 +40,61 @@ class PromptManager:
logger.error(f"加载提示词失败: {prompt_name}, 错误: {e}")
raise
def get_agent_prompt(self) -> str:
"""获取智能体提示词"""
return self.load_prompt("Agent Prompt.txt")
def get_agent_prompt(self, channel: str = None) -> str:
"""
获取智能体提示词
:param channel: 消息渠道Telegram、微信、Slack等
:return: 提示词内容
"""
base_prompt = self.load_prompt("Agent Prompt.txt")
# 根据渠道添加特定的格式说明
if channel:
channel_format_info = self._get_channel_format_info(channel)
if channel_format_info:
base_prompt += f"\n\n## Current Message Channel Format Requirements\n\n{channel_format_info}"
return base_prompt
@staticmethod
def _get_channel_format_info(channel: str) -> str:
"""
获取渠道特定的格式说明
:param channel: 消息渠道
:return: 格式说明文本
"""
channel_lower = channel.lower() if channel else ""
if "telegram" in channel_lower:
return """Messages are being sent through the **Telegram** channel. You must follow these format requirements:
- **Bold text**: Use `*text*` (single asterisk, not double asterisks)
- **Italic text**: Use `_text_` (underscore)
- **Code**: Use `` `text` `` (backtick)
- **Links**: Use `[text](url)` format
- **Important**: Avoid using special characters that need escaping in MarkdownV2: `_*[]()~`>#+-=|{}.!` unless they are part of the formatting syntax
- **Best practice**: Keep formatting simple, avoid nested formatting to ensure proper rendering in Telegram"""
elif "wechat" in channel_lower or "微信" in channel:
return """Messages are being sent through the **WeChat** channel. Please follow these format requirements:
- WeChat does NOT support Markdown formatting. Use plain text format only.
- Do NOT use any Markdown syntax (such as `**bold**`, `*italic*`, `` `code` `` etc.)
- Use plain text descriptions. You can organize content using line breaks and punctuation
- Links can be provided directly as URLs, no Markdown link format needed
- Keep messages concise and clear, use natural Chinese expressions"""
elif "slack" in channel_lower:
return """Messages are being sent through the **Slack** channel. Please follow these format requirements:
- Slack supports Markdown formatting
- Use `*text*` for bold
- Use `_text_` for italic
- Use `` `text` `` for code
- Link format: `<url|text>` or `[text](url)`"""
# 其他渠道使用标准Markdown
return None
def clear_cache(self):
"""清空缓存"""