当前位置: 首页 > article >正文

基于NirDiamant/agents-towards-production项目的LangSmith可观测性实践指南

基于NirDiamant/agents-towards-production项目的LangSmith可观测性实践指南【免费下载链接】agents-towards-productionEnd-to-end, code-first tutorials for building production-grade GenAI agents. From prototype to enterprise deployment.项目地址: https://gitcode.com/GitHub_Trending/ag/agents-towards-production概述在AI应用开发领域构建一个能工作的原型相对容易但要确保系统在生产环境中稳定运行并具备可调试性则充满挑战。本文将通过NirDiamant/agents-towards-production项目中的实践案例展示如何利用LangSmith为基于LangGraph构建的AI系统添加全面的可观测性能力。为什么可观测性至关重要现代AI系统往往在演示阶段表现良好但在实际部署后却难以调试和优化。缺乏对决策过程的可见性开发团队会面临一系列关键问题决策透明度为什么AI会生成特定的响应性能瓶颈系统的哪些部分运行缓慢或成本高昂持续优化如何基于实际使用模式系统性地改进性能工具轨迹哪些工具调用路径最有效且成本最优可观测性就像为AI系统安装飞行记录器它能捕获每个决策点、执行时间和数据流将AI开发从猜测游戏转变为真正的工程实践。环境准备与配置基础环境要求Python 3.9 环境OpenAI API密钥用于访问语言模型LangSmith账户提供可观测性仪表板# 安装必要的开发包 !pip install -U langchain-core langchain-openai langgraph langsmith requestsAPI密钥配置import os # 配置API密钥实际使用时应替换为真实密钥 os.environ[OPENAI_API_KEY] your_openai_key os.environ[LANGCHAIN_API_KEY] your_langsmith_key os.environ[LANGCHAIN_TRACING_V2] true # 启用可观测性 os.environ[LANGCHAIN_PROJECT] langsmith-tutorial-demo # 指定追踪项目名称 # 验证配置 required_vars [OPENAI_API_KEY, LANGCHAIN_API_KEY] for var in required_vars: if not os.getenv(var): print(f警告: {var} 需要配置有效密钥)设置LANGCHAIN_TRACING_V2true会自动启用对所有操作的全面日志记录这相当于为AI系统安装了飞行记录器。构建可观测的智能体系统定义智能体状态我们首先定义一个简单的状态结构它将贯穿整个工作流程from typing import TypedDict class AgentState(TypedDict): 智能体的状态数据结构 user_question: str # 用户原始问题 needs_search: bool # 是否需要搜索 search_result: str # 搜索结果如果使用 final_answer: str # 最终响应 reasoning: str # 决策理由对可观测性非常重要这个结构化状态使LangSmith能够跟踪信息流每个字段都有特定的可观测性目的。实现搜索工具我们创建一个基于Wikipedia搜索API的工具tool def wikipedia_search(query: str) - str: 在Wikipedia上搜索关于主题的最新信息 try: # 使用Wikipedia搜索API处理通用查询 search_url https://en.wikipedia.org/w/api.php search_params { action: query, list: search, srsearch: query, format: json, srlimit: 3 # 获取前3个结果 } response requests.get(search_url, paramssearch_params, timeout10) if response.status_code 200: data response.json() search_results data.get(query, {}).get(search, []) if search_results: # 获取最相关结果并提取摘要 top_result search_results[0] page_title top_result[title] # 使用精确标题获取页面摘要 summary_url fhttps://en.wikipedia.org/api/rest_v1/page/summary/{page_title.replace( , _)} summary_response requests.get(summary_url, timeout10) if summary_response.status_code 200: summary_data summary_response.json() extract summary_data.get(extract, 无可用摘要) return f找到关于{page_title}的信息: {extract[:400]}... else: return f找到{page_title}但无法获取摘要 else: return f没有找到关于{query}的Wikipedia文章 else: return fWikipedia搜索失败状态码{response.status_code} except Exception as e: return f搜索错误: {str(e)}构建决策工作流步骤1决定是否需要搜索def decide_search_need(state: AgentState) - AgentState: 分析问题并决定是否需要搜索最新信息 user_question state[user_question] decision_prompt f 分析这个问题并判断是否需要不在你训练数据中的最新/近期信息: 问题: \{user_question}\ 考虑: - 是否询问近期事件、当前价格或突发新闻? - 是否询问经常变化的人物、公司或主题? - 你能否利用现有知识很好地回答这个问题? 如果需要当前信息请准确回复SEARCH如果可以直接回答则回复DIRECT。 然后在新的一行简要解释你的推理过程。 response llm.invoke([SystemMessage(contentdecision_prompt)]) decision_text response.content.strip() # 解析响应 lines decision_text.split(\n) decision lines[0].strip() reasoning lines[1] if len(lines) 1 else 未提供推理 # 更新状态 state[needs_search] decision SEARCH state[reasoning] f决策: {decision}. 推理: {reasoning} print(f决策: {SEARCH if state[needs_search] else DIRECT} - {reasoning}) return state步骤2执行搜索如果需要def execute_search(state: AgentState) - AgentState: 如果需要则执行搜索否则跳过此步骤 if not state[needs_search]: print(跳过搜索 - 此问题不需要) state[search_result] 未执行搜索 return state print(f执行搜索: {state[user_question]}) # 执行搜索工具 - 在LangSmith中会显示为独立步骤 search_result wikipedia_search.invoke({query: state[user_question]}) state[search_result] search_result print(f搜索完成: 返回{len(search_result)}个字符) return state步骤3生成最终响应def generate_response(state: AgentState) - AgentState: 生成最终响应结合所有可用信息 user_question state[user_question] if state[needs_search]: # 使用搜索结果的响应模板 prompt f 你被问到: \{user_question}\ 你决定搜索最新信息并获得了这些结果: {state[search_result]} 请提供一个有帮助的、准确的回答引用你找到的信息。 保持简洁专业。 else: # 直接回答的模板 prompt f 你被问到: \{user_question}\ 你确定这个问题可以使用你的现有知识回答。 请提供一个有帮助的、准确的回答。 保持简洁专业。 response llm.invoke([SystemMessage(contentprompt)]) state[final_answer] response.content print(响应生成完成) return state组装工作流图from langgraph.graph import StateGraph, END # 创建工作流 workflow StateGraph(AgentState) # 添加节点 workflow.add_node(decide_search, decide_search_need) workflow.add_node(execute_search, execute_search) workflow.add_node(generate_response, generate_response) # 定义边 workflow.add_edge(decide_search, execute_search) workflow.add_edge(execute_search, generate_response) workflow.add_edge(generate_response, END) # 设置入口点 workflow.set_entry_point(decide_search) # 编译工作流 agent workflow.compile()运行与观测现在我们可以运行智能体并观察LangSmith中的追踪# 运行智能体 result agent.invoke({ user_question: 2023年诺贝尔物理学奖获得者是谁?, needs_search: None, search_result: None, final_answer: None, reasoning: None }) print(\n最终回答:) print(result[final_answer])在LangSmith仪表板中你将看到完整的执行轨迹包括决策节点的输入/输出搜索工具的执行详情响应生成过程每个步骤的执行时间和顺序可观测性最佳实践结构化状态设计确保状态包含足够的信息来理解系统行为清晰的节点边界将功能分解为离散的、可观测的步骤详细的推理记录捕获AI的决策过程而不仅仅是最终结果错误处理确保错误信息对调试有帮助性能指标关注关键步骤的执行时间通过遵循这些模式你可以构建不仅功能强大而且易于监控和调试的AI系统。LangSmith提供的可观测性能力使开发团队能够快速识别问题、优化性能并理解用户与系统的交互方式。【免费下载链接】agents-towards-productionEnd-to-end, code-first tutorials for building production-grade GenAI agents. From prototype to enterprise deployment.项目地址: https://gitcode.com/GitHub_Trending/ag/agents-towards-production创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

基于NirDiamant/agents-towards-production项目的LangSmith可观测性实践指南

基于NirDiamant/agents-towards-production项目的LangSmith可观测性实践指南 【免费下载链接】agents-towards-production End-to-end, code-first tutorials for building production-grade GenAI agents. From prototype to enterprise deployment. 项目地址: https://gitc…...

Onekey:三分钟学会免费获取Steam游戏清单的完整指南

Onekey:三分钟学会免费获取Steam游戏清单的完整指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey Steam游戏清单获取从未如此简单!你是否曾经需要获取Steam游戏的Depot…...

基于NirDiamant/agents-towards-production项目:使用RunPod Serverless部署AI智能体实战指南

基于NirDiamant/agents-towards-production项目:使用RunPod Serverless部署AI智能体实战指南 【免费下载链接】agents-towards-production End-to-end, code-first tutorials for building production-grade GenAI agents. From prototype to enterprise deployment…...

八大排序算法-选择排序

介绍选择排序:每一次从待排序序列中找出最小值和待排序序列的第一个值进行交换,重复这个过程,直到待排序序列没有值选择排序:时间复杂度O(n^2) 空间复杂度O(1) 稳定性:不稳定 难度范围:简单可以设置一个变量来保存最小…...

Vatee:风险管理理念的深度实践

伴随金融市场的不断成熟,越来越多的客户开始关注平台的专业水准与综合能力。Vatee在行业中的发展轨迹较为值得关注。本文从评测视角出发,对其在多个核心维度上的实践进行综合呈现,力图以客观、平衡的姿态展示该平台的整体面貌,便于…...

AI与XR融合实战:Mosaic-Bridge中间件架构与性能调优

1. 项目概述:一个连接AI与XR世界的桥梁 最近在探索AI与扩展现实(XR)融合的落地场景时,我遇到了一个非常有意思的开源项目—— MosaicXR-AI/mosaic-bridge 。乍一看这个标题,你可能会觉得它只是一个普通的“桥接”工…...

DLSS版本切换终极指南:掌控游戏性能优化的核心技术

DLSS版本切换终极指南:掌控游戏性能优化的核心技术 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 想要在《赛博朋克2077》中体验更流畅的光追效果?或是让《艾尔登法环》的画面表现更上一层楼&a…...

ARM Cortex-M调试陷阱:Flash断点残留如何导致Hard Fault

1. 项目概述:一次由断点引发的“血案”与深度剖析最近在支持一个基于NXP KW36(Cortex-M0内核)的BLE项目时,我遇到了一个极其隐蔽且令人抓狂的问题。同一批次的板子,烧录完全相同的固件,绝大多数运行正常&am…...

告别全屏地球!用Cesium.js在地图上只显示一个县(附完整代码)

用Cesium.js实现区域聚焦:打造专属行政区划三维地图 在WebGIS开发中,我们经常遇到需要将三维地球的显示范围限定在特定行政区划内的需求。无论是为了突出展示某个城市的发展规划,还是为了制作县域级别的专题地图,区域聚焦技术都能…...

【GPT-4V全面评估】:大语言多模态模型的黎明时代

多模态大模型时代的黎明:GPT-4V(ision)全面能力深度测评 当AI还在为"看图说话"磕磕绊绊时,GPT-4V已经悄悄解锁了"看懂世界"的超能力。它不仅能识别图片里的物体,还能理解梗图的笑点、解数学题、读X光片、甚至帮你操作电脑…...

图记忆架构:用知识图谱增强AI智能体的长期记忆与推理能力

1. 项目概述:当记忆成为可编程的图最近在探索如何让AI应用真正“记住”复杂的上下文时,我遇到了一个非常有意思的项目:openclaw-memory-graphiti。这个名字听起来有点拗口,但拆解一下就能明白它的野心——“OpenClaw”可能是一个开…...

启扬RK3568核心板如何赋能智能炒菜机:从嵌入式主控到AI烹饪

1. 项目概述:当嵌入式核心板遇上智能炒菜机在餐饮后厨这个看似传统,实则对效率、成本和一致性要求极高的领域,痛点一直非常明确。人工炒菜,老师傅的手艺固然可贵,但出餐速度受限于体力,菜品口味因厨师状态、…...

终极指南:Ghost补丁管理系统与第三方依赖维护最佳实践

终极指南:Ghost补丁管理系统与第三方依赖维护最佳实践 【免费下载链接】Ghost Independent technology for modern publishing, memberships, subscriptions and newsletters. 项目地址: https://gitcode.com/GitHub_Trending/gh/Ghost Ghost作为一款强大的现…...

Git提交规范与自动化实践:从Conventional Commits到团队协作

1. 项目概述与核心价值最近在整理团队代码仓库时,发现一个挺普遍的问题:提交记录五花八门,什么“fix bug”、“update”、“test”之类的信息满天飞。这种混乱的提交历史,不仅让后续的代码审查和问题追溯变得异常困难,…...

Ghost区块链集成:NFT内容所有权与分发方案

Ghost区块链集成:NFT内容所有权与分发方案 内容创作者的数字版权困境 传统内容发布平台存在严重的数字版权问题:文章被随意转载、原创收益被平台抽成、作品归属权难以证明。根据2024年《数字内容版权报告》,78%的独立创作者曾遭遇内容侵权&…...

解锁网盘文件下载新体验:LinkSwift直链解析工具完全指南

解锁网盘文件下载新体验:LinkSwift直链解析工具完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

开源MCP服务器集合OpenClaw:模块化AI工具链的架构与实践

1. 项目概述:当开源AI工具链遇上“机械爪”如果你最近在折腾AI应用开发,特别是那些需要让大语言模型(LLM)与现实世界或复杂工具进行交互的项目,那么你很可能已经接触过“MCP”(Model Context Protocol&…...

ARM中断控制器架构与配置实践详解

1. ARM中断控制器架构解析在嵌入式系统设计中,中断控制器作为处理器与外围设备间的关键枢纽,其性能直接影响系统的实时性和可靠性。ARM1176JZF-S处理器采用了两级中断控制架构:位于开发芯片中的TrustZone中断控制器(TZIC)和通用中断控制器(GI…...

listmonk容器资源监控告警:资源使用率阈值

listmonk容器资源监控告警:资源使用率阈值 你是否遇到过listmonk邮件列表管理器在高负载时突然卡顿?或者因服务器资源耗尽导致邮件发送中断?本文将详细介绍如何为listmonk容器配置资源监控与告警阈值,帮助你提前识别并解决资源瓶…...

ESXi 8.0U3i 新版本深度解析|官方原版核心优势 + 部署指南,稳定运维首选

随着企业虚拟化、私有云部署需求的不断升级,一款稳定、安全、可追溯的底层虚拟化系统,成为数据中心、机房运维与合规生产的核心诉求。VMware ESXi 8.0U3i(版本 8.0U3i-25205845)作为 8.0 系列 2026 年最新推出的稳定版本&#xff…...

终极指南:如何用ROFL-Player永久解决英雄联盟回放版本兼容性问题

终极指南:如何用ROFL-Player永久解决英雄联盟回放版本兼容性问题 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄…...

命令行媒体管理工具amem:本地化素材归档与自动化实践

1. 项目概述:一个被低估的本地化媒体管理工具最近在整理个人数字资产时,我遇到了一个老生常谈但又无比棘手的问题:如何高效、优雅地管理那些散落在硬盘各个角落的短视频、图片和音频文件?无论是手机拍摄的生活片段,还是…...

7步掌握listmonk API认证:从令牌生成到权限验证实战指南

7步掌握listmonk API认证:从令牌生成到权限验证实战指南 listmonk是一款高性能、自托管的新闻通讯和邮件列表管理器,具有现代化的仪表板,采用单一二进制应用形式。本文将详细介绍如何通过7个简单步骤掌握listmonk的API认证,包括令…...

知识图谱冷启动失败率高达68%?NotebookLM构建中的3类隐性数据断层及实时修复方案

更多请点击: https://intelliparadigm.com 第一章:NotebookLM知识图谱构建的冷启动困境本质 NotebookLM 作为 Google 推出的基于文档理解的 AI 助手,其核心能力依赖于对用户上传文档构建结构化知识图谱。然而在初始阶段,系统面临…...

listmonk数据库查询缓存键命名规范:一致性与可读性

listmonk数据库查询缓存键命名规范:一致性与可读性 在高性能自托管邮件列表管理器listmonk中,数据库查询缓存是提升系统响应速度的关键组件。本文将深入解析listmonk项目中数据库查询缓存键的命名规范,探讨如何通过一致性的命名规则和良好的…...

你的Type-C设备为什么容易坏?可能是静电防护没做对!从手机到笔记本的防护方案拆解

Type-C设备静电防护全指南:从原理到实战的完整解决方案 每次插拔Type-C数据线时,那个微小的火花可能正在悄悄摧毁你的设备。我拆解过上百台因静电损坏的电子产品,发现90%的Type-C接口故障都始于那个看似无害的瞬间放电现象。这种现象在干燥季…...

NotebookLM问答功能深度解析:如何用3步配置让AI精准理解你的PDF/网页文档?

更多请点击: https://intelliparadigm.com 第一章:NotebookLM问答功能深度解析:如何用3步配置让AI精准理解你的PDF/网页文档? NotebookLM 是 Google 推出的面向研究者与知识工作者的实验性 AI 工具,其核心能力在于基于…...

Honey Select 2汉化补丁:3分钟快速安装与完整功能指南

Honey Select 2汉化补丁:3分钟快速安装与完整功能指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日文界面而烦恼吗&…...

AssetRipper完整指南:快速掌握Unity游戏资源提取的终极方法

AssetRipper完整指南:快速掌握Unity游戏资源提取的终极方法 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 在游戏开发和逆…...

番茄小说下载器终极指南:3分钟掌握全平台电子书制作技巧 [特殊字符]

番茄小说下载器终极指南:3分钟掌握全平台电子书制作技巧 🚀 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款基于Rust语言开发的专…...