Agent项目:AI舆情分析Agent
系统设计
•
原始网页存储库,这个库需要能支持海量数据,低成本,低延时
•
计算引擎在做数据处理时,可能还需要从存储库中获取元数据

图1 舆情系统业务流程
66%

图2:舆情分析风控雷达
34%
一次完整分析流程
#SJfKMkimuhTT text { white-space: pre; }#SJfKMkimuhTT .fb0 { stroke: var(--N900-FG, 0.15); }#SJfKMkimuhTT .fb0 {stroke: rgba(31,35,41, 0.15)}#SJfKMkimuhTT .fx0 { stroke-miterlimit: 10; }#SJfKMkimuhTT .fx0 {stroke-miterlimit: 10}#SJfKMkimuhTT .fa1 { fill: rgb(187, 191, 196); }#SJfKMkimuhTT .fa1 {fill: rgb(187, 191, 196)}#SJfKMkimuhTT .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#SJfKMkimuhTT .fx1 {font-style: normal}#SJfKMkimuhTT .fx2 { text-anchor: middle; }#SJfKMkimuhTT .fx2 {text-anchor: middle}#SJfKMkimuhTT .fx3 { dominant-baseline: central; }#SJfKMkimuhTT .fx3 {dominant-baseline: central}#SJfKMkimuhTT .fx4 { stroke: none; }#SJfKMkimuhTT .fx4 {stroke: none}#SJfKMkimuhTT .fc0 { fill: var(--text-caption); }#SJfKMkimuhTT .fc0 {fill: #646a73}#SJfKMkimuhTT .fa2 { fill: var(--text-link-disabled); }#SJfKMkimuhTT .fa2 {fill: rgb(187, 191, 196)}#SJfKMkimuhTT .fa3 { fill: rgb(225, 234, 255); }#SJfKMkimuhTT .fa3 {fill: rgb(225, 234, 255)}#SJfKMkimuhTT .fx5 { font: 700 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#SJfKMkimuhTT .fx5 {font-style: normal}#SJfKMkimuhTT .fx6 { text-anchor: start; }#SJfKMkimuhTT .fx6 {text-anchor: start}#SJfKMkimuhTT .fx7 { dominant-baseline: alphabetic; }#SJfKMkimuhTT .fx7 {dominant-baseline: alphabetic}#SJfKMkimuhTT .fc1 { fill: rgb(0, 0, 0); }#SJfKMkimuhTT .fc1 {fill: rgb(0, 0, 0)}#SJfKMkimuhTT .fx8 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#SJfKMkimuhTT .fx8 {font-style: normal}#SJfKMkimuhTT .fb1 { fill: var(--N900-FG, 0.15); }#SJfKMkimuhTT .fb1 {fill: rgba(31,35,41, 0.15)}#SJfKMkimuhTT .fb2 { fill: rgb(209, 217, 224); }#SJfKMkimuhTT .fb2 {fill: rgb(209, 217, 224)}#SJfKMkimuhTT .fa4 { fill: var(--bg-body); }#SJfKMkimuhTT .fa4 {fill: #fff}ABCDE123456789101112步骤阶段名称主要操作参与组件循环特性123455.15.25.3N+1N+2N+3用户提问并行启动初步分析策略制定循环阶段深度研究论坛协作交流融合结果整合IR中间表示报告生成Flask主应用接收查询三个Agent同时开始工作各Agent使用专属工具进行概览搜索基于初步结果制定分块研究策略论坛协作 + 深度研究各Agent基于论坛主持人引导进行专项搜索ForumEngine监控Agent发言并生成主持人引导各Agent根据讨论调整研究方向Report Agent收集所有分析结果和论坛内容动态选择模板和样式,多轮生成元数据,装订为IR中间表示分块进行质量检测,基于IR渲染成交互式 HTML 报告Flask主应用Query Agent、Media Agent、Insight Agent各Agent + 专属工具集各Agent内部决策模块ForumEngine + 所有Agent各Agent + 反思机制 + 论坛引导ForumEngine + LLM主持人各Agent + forum_reader工具Report AgentReport Agent + 模板引擎Report Agent + 装订引擎----多轮循环每轮循环每轮循环每轮循环---

首先打开谷歌旗下的Google Antigrativy,谷歌旗下的 ide 编译器,输入提示词:
代码块
Python
项目代码结构树
代码块
Python
BettaFish/
├── QueryEngine/ # 国内外新闻广度搜索Agent
│ ├── agent.py # Agent主逻辑,协调搜索与分析流程
│ ├── llms/ # LLM接口封装
│ ├── nodes/ # 处理节点:搜索、格式化、总结等
│ ├── tools/ # 国内外新闻搜索工具集
│ ├── utils/ # 工具函数
│ ├── state/ # 状态管理
│ ├── prompts/ # 提示词模板
│ └── ...
├── MediaEngine/ # 强大的多模态理解Agent
│ ├── agent.py # Agent主逻辑,处理视频/图片等多模态内容
│ ├── llms/ # LLM接口封装
接下来看技术架构设计,分为数据层:主要采集小红书数据,分析层:根据采集到的数据进行分析,报告层:根据分析出来的结果呈现出来给用户,这个架构设计很合理,没问题,我们继续往下看。
Agent配置参数
每个Agent都有专门的配置文件,可根据需求调整,下面是部分示例:
代码块
YAML
确定工作流的具体文件和具体作用
情感分析模型配置
代码块
Python
# InsightEngine/tools/sentiment_analyzer.py
SENTIMENT_CONFIG = {
'model_type': 'multilingual', # 可选: 'bert', 'multilingual', 'qwen'等
'confidence_threshold': 0.8, # 置信度阈值
'batch_size': 32, # 批处理大小
'max_sequence_length': 512, # 最大序列长度
}
接入不同的LLM模型
支持任意openAI调用格式的LLM提供商,只需要在/config.py中填写对应的KEY、BASE_URL、MODEL_NAME即可。
什么是openAI调用格式?下面提供一个简单的例子:
代码块
Python
from openai import OpenAI
client = OpenAI(api_key="your_api_key",
我觉得没啥问题,开始干就完事了,直接执行继续执行开始做这个舆情 agent 了。

16%
27%
57%
环境搭建完毕了,然后我们进行登录。
将复制好的 cookie 复制到代码中的.env环境配置里面的cookie 变量里面去,就可以了。
更改情感分析模型
多语言情感分析
代码块
Python
cd SentimentAnalysisModel/WeiboMultilingualSentiment
python predict.py --text "This product is amazing!" --lang "en"
小参数Qwen3微调
代码块
Python
cd SentimentAnalysisModel/WeiboSentiment_SmallQwen
python predict_universal.py --text "这次活动办得很成功"
基于BERT的微调模型
代码块
Python
# 使用BERT中文模型
cd SentimentAnalysisModel/WeiboSentiment_Finetuned/BertChinese-Lora
python predict.py --text "这个产品真的很不错"
GPT-2 LoRA微调模型
代码块
Python
cd SentimentAnalysisModel/WeiboSentiment_Finetuned/GPT2-Lora
python predict.py --text "今天心情不太好"
传统机器学习方法
代码块
Python
cd SentimentAnalysisModel/WeiboSentiment_MachineLearning
执行过程中自动写代码,然后自动开始测试,没想到效果还挺好的,竟然真出来了数据。
15%
70%
15%
等了一会,小红书舆情 agent 开发完成了,只不过是数据版本,但Gemini3.1 还挺贴心写了个使用说明文档,告诉我咋用。
这种生成完的数据报告都是makdown格式看着有点费劲,我的让他给我变成可视化才行,来,我继续指挥他给我们优化升级。输入指令:
代码块
Python
要用 web 页面来给我呈现数据和报告,而且要用 react 技术来开发。
接入自定义业务数据库
修改数据库连接配置
代码块
Python
# config.py 中添加您的业务数据库配置
BUSINESS_DB_HOST = "your_business_db_host"
BUSINESS_DB_PORT = 3306
BUSINESS_DB_USER = "your_business_user"
BUSINESS_DB_PASSWORD = "your_business_password"
BUSINESS_DB_NAME = "your_business_database"
创建自定义数据访问工具
代码块
Python
# InsightEngine/tools/custom_db_tool.py
class CustomBusinessDBTool:
"""自定义业务数据库查询工具"""
def __init__(self):
self.connection_config = {
'host': config.BUSINESS_DB_HOST,
'port': config.BUSINESS_DB_PORT,
'user': config.BUSINESS_DB_USER,
'password': config.BUSINESS_DB_PASSWORD,
'database': config.BUSINESS_DB_NAME,
}
def search_business_data(self, query: str, table: str):
"""查询业务数据"""
# 实现您的业务逻辑
pass
def get_customer_feedback(self, product_id: str):
集成到InsightEngine
代码块
Python
# InsightEngine/agent.py 中集成自定义工具
from .tools.custom_db_tool import CustomBusinessDBTool
class DeepSearchAgent:
def __init__(self, config=None):
# ... 其他初始化代码
self.custom_db_tool = CustomBusinessDBTool()
def execute_custom_search(self, query: str):
"""执行自定义业务数据搜索"""
return self.custom_db_tool.search_business_data(query, "your_table")
现在web 版本已经开发完事了,还挺快呀

46%

54%
我们试一下看看效果怎么样,我输入 ai 查询一下。
但是这个系统有两个问题,一个是下面的 ai 智能洞察报告格式很丑,需要优化一下
继续指挥Gemini3.1 给我干活:
代码块
Plain Text
可以看到,效果已经达到预期了