2026/1/9 10:35:28
网站建设
项目流程
高校网站如何建设论文,网站建设软文模板,网站建设与管理小论文,邢台吧李彦明作者#xff1a;江昱
舆情分析是企业感知市场脉搏、预警公关危机的“听诊器”#xff0c;然而传统的舆情分析系统更像是一个个“手工作坊”#xff0c;面临数据收集效率低、分析深度不够、实时性差等问题#xff0c;经常反馈之后#xff0c;等企业拿到报告时#xff0c;…作者江昱舆情分析是企业感知市场脉搏、预警公关危机的“听诊器”然而传统的舆情分析系统更像是一个个“手工作坊”面临数据收集效率低、分析深度不够、实时性差等问题经常反馈之后等企业拿到报告时舆论热点早已转移错过最佳时间。这些挑战正是所有舆情系统开发者共同的痛点。本方案将基于真实的代码实现向您介绍如何使用函数计算 AgentRun 平台构建一个现代化的“舆情分析专家”该系统不仅实现了从数据采集到报告生成的可视化、全流程自动化更通过流式架构让洞察实时呈现。系统架构设计整个舆情分析系统采用分层架构设计核心思想是通过代码严格控制流程执行顺序而非依赖 LLM 的自主决策。快速体验和效果预览在深入技术细节前我们先直观感受一下这套系统的效果。通过 AgentRun 平台只需简单几步即可完成部署。快速部署打开阿里云函数计算 AgentRun 探索页面可以找到舆情分析专家案例并点击卡片右下角进行部署填写完整对应的参数信息即可点击右下角确定创建按钮此处需要稍等片刻创建完之后可以看到体验地址也可以跳转到运行时与沙箱看到部署完的 Agent首页地址即右侧main_web地址直接查看线上效果也可以查看该应用案例代码并进行在线二次开发效果体验打开体验地址可以看到舆情分析专家页面此时可以输入一个词进行舆情分析分析过程中系统会调用函数计算 AgentRun 的 Sandbox 沙箱确切说是创建的时候选择的浏览器沙箱可以看到 AI 控制云上的浏览器进行数据检索完成之后系统会整理所有采集到的数据和信息最终生成文字图表的“可视化报告”AgentRun 相比传统方案的核心优势安全隔离的执行环境传统舆情系统通常直接在服务器上运行爬虫程序面临着安全风险和环境污染问题。当某个网站的反爬机制触发时可能影响整个服务器的稳定性。而 AgentRun Sandbox 提供了完全隔离的浏览器环境即使单个采集任务出现问题也不会影响系统的整体运行。async def create_browser_sandbox() - Optional[BrowserSandbox]: 创建隔离的浏览器环境避免环境污染 try: sandbox await Sandbox.create_async( template_typeTemplateType.BROWSER, template_nameagentrun_browser_sandbox_name, ) _sandboxes[sandbox.sandbox_id] sandbox return sandbox except Exception as e: # 单个Sandbox失败不影响其他实例 raise SandboxCreationError(f创建 Sandbox 失败: {e})真实浏览器环境模拟传统爬虫方案通常使用简单的 HTTP 请求库容易被现代网站的反爬机制识别和拦截。AgentRun Sandbox 提供的是真实的 Chrome 浏览器环境能够完整执行 JavaScript、处理复杂的页面交互大大提高了数据采集的成功率。从代码中可以看到系统通过 Playwright 连接到真实的 Chrome 实例async with async_playwright() as playwright: browser await playwright.chromium.connect_over_cdp(sandbox.get_cdp_url()) context browser.contexts[0] if browser.contexts else await browser.new_context() page context.pages[0] if context.pages else await context.new_page()可视化调试能力函数计算 AgentRun 最独特的优势是提供了实时的 VNC 预览功能开发者和用户可以实时观察浏览器的操作过程。这种透明性在传统方案中是无法实现的它不仅有助于调试和优化采集逻辑还能让用户直观地了解系统的工作状态。弹性扩展和故障恢复传统系统在面临大规模采集任务时往往需要复杂的分布式架构设计。而函数计算 AgentRun 天然支持多 Sandbox 并行处理系统可以根据需要动态创建和销毁浏览器实例。更重要的是当某个实例出现故障时系统能够自动检测并重建async def recreate_sandbox_if_closed(sandbox_id: str, error_message: str): 智能故障检测和自动重建机制 closed_error_patterns [ Target page, context or browser has been closed, Browser has been closed, Connection closed, ] is_closed_error any(pattern.lower() in error_message.lower() for pattern in closed_error_patterns) if is_closed_error: await remove_sandbox(sandbox_id) new_sandbox await create_browser_sandbox() return new_sandboxAgentRun Sandbox 采用阿里云函数计算实现支持百万沙箱模板函数级别并发运行Serverless 弹性伸缩支持 3.5w 沙箱/分钟支持缩容到 0按请求感知调度。后端核心实现Agent 工具链设计系统的核心是一个基于 PydanticAI 的智能体该智能体包含四个关键工具每个工具负责舆情分析的不同阶段。Agent 的设计遵循严格的执行顺序确保数据收集的完整性和分析的准确性。opinion_agent Agent( agentrun_model, deps_typeStateDeps, system_prompt你是舆情分析系统的执行者。 你的任务是按照以下严格流程执行舆情分析 【流程】 1. 收到关键词后调用 collect_data 工具收集数据 2. 数据收集完成后调用 analyze_data 工具分析数据 3. 分析完成后调用 write_report 工具撰写报告 4. 报告完成后调用 render_html 工具生成 HTML 【重要规则】 - 必须按顺序调用工具 - 每个工具只调用一次 - 不要跳过任何步骤 - 不要编造数据 , retries3, )流式输出与实时反馈传统舆情系统通常采用批处理模式用户需要等待很长时间才能看到结果。而基于函数计算 AgentRun 的系统实现了真正的流式输出用户可以实时观察每个处理步骤的进展。这种实时性不仅提升了用户体验也便于及时发现和解决问题。async def push_state_event(run_id: str, state: OpinionState): 实时推送状态更新用户无需等待 event StateSnapshotEvent( typeEventType.STATE_SNAPSHOT, snapshotstate.model_dump(), timestampint(time.time() * 1000) ) await event_manager.push_event(run_id, event)智能数据质量控制系统实现了严格的数据质量控制机制通过多维度评估确保收集到的数据具有较高的相关性和价值。这种质量控制在传统系统中往往是缺失的导致大量噪音数据影响分析结果。async def evaluate_relevance(keyword: str, title: str, snippet: str) - float: 多维度相关性评估确保数据质量 text f{title} {snippet} text_lower text.lower() # 检测关键词匹配度 has_chinese_keyword any(\u4e00 char 鿿 for char in keyword) result_has_chinese any(\u4e00 char 鿿 for char in text) # 中文关键词必须在结果中有中文内容 if has_chinese_keyword and not result_has_chinese: return 0.0 # 排除明显的无关网站 irrelevant_patterns [ calculator, deepseek, chegg, stackoverflow, 翻译, dictionary, 词典 ] if any(pattern in text_lower for pattern in irrelevant_patterns): return 0.0 # 计算相关性得分 score 0.0 if keyword in text: score 0.6 # 基础分 # 时效性加分 time_keywords [最新, 今日, 近日, 2024, 2025] if any(tk in text for tk in time_keywords): score 0.1 return max(0.0, min(1.0, score))深度内容抓取技术平台适配策略不同的社交媒体平台具有不同的页面结构和内容组织方式传统系统往往采用统一的抓取策略导致数据质量参差不齐。AgentRun 系统针对不同平台实现了定制化的抓取逻辑async def explore_page_with_llm(page, keyword: str, url: str, source: str, initial_content: str): 基于平台特性的智能内容抓取 if weibo.com in url: # 微博特定的评论和转发抓取 available_actions [ {action: view_comments, selector: .WB_feed_expand, [class*comment]}, {action: view_retweets, selector: .WB_feed_expand, [class*repost]}, ] elif zhihu.com in url: # 知乎回答和评论抓取 available_actions [ {action: view_more_answers, selector: .AnswerItem, .List-item}, {action: view_comments, selector: .Comments-container, .CommentItem}, ] elif bilibili.com in url: # B站视频评论抓取 available_actions [ {action: view_comments, selector: .reply-item, .root-reply}, {action: view_related, selector: .video-page-card, .recommend-list}, ]LLM 驱动的智能探索系统创新性地引入了 LLM 驱动的智能探索机制让 AI 决定是否需要深入抓取某个页面的额外内容如评论区、相关推荐等。这种智能决策大大提高了数据采集的效率和针对性。async def llm_decide_exploration(keyword: str, page_url: str, page_content: str, source: str): LLM 智能决策是否进行深度探索 prompt f请根据以下信息决定是否需要进一步探索页面获取更多舆情数据。 【搜索关键词】{keyword} 【当前页面】{page_url} 【已获取内容预览】{page_content[:500]} 【决策标准】 1. 如果当前内容已经足够丰富可能不需要进一步探索 2. 如果是微博/B站等平台评论区通常包含重要的舆情信息 3. 权衡时间成本每个页面最多探索1-2个操作 请返回 JSON 格式的决策结果。 result await explorer.run(prompt) return json.loads(result.output)前端 VNC 集成实现动态库加载机制前端 VNC 客户端需要动态加载 noVNC 库系统实现了智能的加载机制支持本地资源和 CDN 回退function loadScript(url) { return new Promise(function(resolve, reject) { var script document.createElement(script); script.src baseUrl url; script.onload resolve; script.onerror function() { // 本地加载失败尝试 CDN var fallbackUrl url.includes(wordcloud) ? https://cdn.jsdelivr.net/npm/echarts-wordcloud2.1.0/dist/echarts-wordcloud.min.js : https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js; var fallbackScript document.createElement(script); fallbackScript.src fallbackUrl; fallbackScript.onload resolve; fallbackScript.onerror reject; document.head.appendChild(fallbackScript); }; document.head.appendChild(script); }); }多协议适配考虑到部署环境的复杂性VNC 组件实现了 HTTP/HTTPS 环境下的 WebSocket 协议自适应const adjustWebSocketUrl useCallback((url: string): string { const isHttps window.location.protocol https:; if (!isHttps url.startsWith(wss://)) { return url.replace(wss://, ws://); } if (isHttps url.startsWith(ws://)) { return url.replace(ws://, wss://); } return url; }, []);智能分析与报告生成标准化情感分析系统实现了基于关键词词典的情感分析算法相比传统的机器学习模型这种方法更加透明和可控class SentimentStandards: 情感倾向标准化计算 POSITIVE_KEYWORDS [ 优秀, 卓越, 创新, 领先, 突破, 成功, 赞, 好评, 支持, 认可, 满意, 信赖, 期待, 看好, 值得, 推荐, 喜欢 ] NEGATIVE_KEYWORDS [ 差, 糟糕, 失败, 落后, 问题, 缺陷, 批评, 质疑, 担忧, 失望, 不满, 抱怨, 投诉, 差评, 垃圾, 骗局 ] staticmethod def calculate_sentiment_score(text: str) - float: 计算情感得分 (-1.0 到 1.0) positive_count sum(1 for word in SentimentStandards.POSITIVE_KEYWORDS if word in text) negative_count sum(1 for word in SentimentStandards.NEGATIVE_KEYWORDS if word in text) total_count positive_count negative_count if total_count 0: return 0.0 return (positive_count - negative_count) / total_count流式报告生成报告生成过程采用流式输出用户可以实时观察报告的撰写过程这种体验是传统系统无法提供的async with writer.run_stream(report_prompt) as result: async for text in result.stream_text(): report_content text state.report_text report_content current_time asyncio.get_event_loop().time() content_delta len(report_content) - last_event_length time_delta current_time - last_event_time # 每 100 字符或每 0.3 秒发送一次更新 if content_delta 100 or time_delta 0.3: await push_state_event(run_id, state)部署与运维优势简化的部署流程相比传统舆情系统需要复杂的分布式爬虫集群部署AgentRun 系统的部署相对简单。只需要配置好环境变量和 AgentRun Sandbox 模板系统就能自动管理浏览器实例的创建和销毁# 核心配置 AGENTRUN_MODEL_NAMEyour_model_name MODEL_NAMEqwen3-max AGENTRUN_BROWSER_SANDBOX_NAMEyour_browser_template TIMEOUT180自动化运维能力系统内置了完善的监控和自恢复机制大大降低了运维复杂度。当检测到异常时系统能够自动重建资源保证服务的连续性# 连接失败时自动重连每 10 秒尝试一次 useEffect(() { if (status error active rfbLoaded) { reconnectTimerRef.current setTimeout(() { cleanupRfb(); lastUrlRef.current null; fetchVncUrl(true); }, RECONNECT_INTERVAL); } }, [status, active, rfbLoaded]);性能与扩展性分析并发处理能力传统系统的并发能力往往受限于单机资源而函数计算 AgentRun 系统可以根据需要动态创建多个 Sandbox 实例实现真正的水平扩展。系统通过异步编程模型和连接池管理能够高效处理大量并发请求uvicorn.run( main:app, host0.0.0.0, port8000, log_levelinfo, timeout_keep_alive120, limit_concurrency100, # 支持高并发 )资源弹性管理系统实现了智能的资源管理策略能够根据任务负载动态调整 Sandbox 实例数量。这种弹性扩展能力是传统固定架构难以实现的async def get_all_sandboxes() - List[Dict[str, Any]]: 动态获取所有可用的Sandbox实例 result [] async with _sandbox_lock: for sandbox_id, sandbox in _sandboxes.items(): try: # 检查实例健康状态 vnc_url sandbox.get_vnc_url() result.append({ sandbox_id: sandbox_id, vnc_url: vnc_url, active: True, }) except Exception: # 自动清理失效实例 result.append({ sandbox_id: sandbox_id, active: False, }) return result总结基于函数计算 AgentRun 构建的舆情分析系统展现了现代 AI 技术在实际业务场景中的强大应用潜力。相比传统方案函数计算 AgentRun 系统在安全性、可靠性、可观测性和扩展性方面都具有显著优势。通过隔离的浏览器环境系统解决了传统爬虫面临的安全风险和环境污染问题。实时的 VNC 预览功能提供了前所未有的透明度让开发者和用户能够直观地观察系统工作状态。智能的故障检测和自恢复机制大大降低了运维复杂度而流式输出设计则显著提升了用户体验。更重要的是函数计算 AgentRun 系统将复杂的舆情分析任务完全自动化从多平台数据采集、深度内容抓取、智能情感分析到专业报告生成整个流程无需人工干预。这种端到端的自动化能力结合 AI 技术的持续进步将为企业和机构的舆情分析工作带来革命性的改变。欢迎加入“函数计算 AgentRun 客户群”与我们交流钉钉群号134570017218。快速了解函数计算 AgentRun一句话介绍函数计算 AgentRun 是一个以高代码为核心的一站式 Agentic AI 基础设施平台。秉持生态开放和灵活组装的理念为企业级 Agent 应用提供从开发、部署到运维的全生命周期管理。函数计算 AgentRun 架构图AgentRun 运行时基于阿里云函数计算 FC 构建继承了 Serverless 计算极致弹性、按量付费、零运维的核心优势。通过深度集成 AgentScope、Langchain、RAGFlow、Mem0 等主流开源生态。AgentRun 将 Serverless 的极致弹性、零运维和按量付费的特性与 AI 原生应用场景深度融合助力企业实现成本与效率的极致优化平均 TCO 降低 60%。让开发者只需专注于 Agent 的业务逻辑创新无需关心底层基础设施让 Agentic AI 真正进入企业生产环境。