前言思考:
ChatGPT最近可谓是火炸地球。 伴随着这一波LLM热, 各种使用方式也是层出不穷, AutoGPT, agentGPT, 以及看上去更加完善的LangChain都在不断刷新大家的认知。
而本人则一直在AIOps领域做应用研究,如何结合LLM, LangChain,实现更好的更智能化的根因分析,故障分析则是一个很有价值,也很贴合时势的话题。 目前看来, 在AIOps领域中有几个很有前景的应用场景:
- 智能答疑机器人:
更智能化的答疑机器人, 进一步降低答疑成本, 完全覆盖可用文档回答的问题。
- 故障分析(工单分析):
- 微软最近刚刚发布了一篇关于LLM应用在故障报告分析的论文: 《Recommending Root-Cause and Mitigation Steps for Cloud Incidents using Large Language Models》帮助大家打开了一些思路。
- 这篇论文更多的是从历史故障文本(故障描述、根因报告、推荐方案)中进行推理和总结, 从而实现对新出现问题的推荐根因和推荐解决方案。
- 而无论在真实的根因分析流程中,还是工单分析中, 我们自己的代码是可以看到真实发生的指标,日志,trace,告警事件数据的。 如何把这些更多的数据输入给LLM?
因此, 如果能够利用LangChain的Agent对问题的推理、任务的编排能力, 再进一步结合自定义的检查脚本工具, 是否就能够更好的实现故障分析的流程化智能编排和执行。
因此本文介绍第一步: 如何使用LangChain的自定义tool,来实现定制化的执行脚本需求。
首先是先定义一个AI model
使用官方标准Tools
例如我们可以用SERPAPI tool进行搜索服务。
ps: 对应的api-key可以在这里申请https://serpapi.com/manage-api-key
自定义Tools
这里我们定义了1个tool, 该tool主要是针对应用监控领域中, 对应用状态的检查。 这里我们只是象征的表达一下, 真实的检查逻辑比这个复杂很多。
同时, 我们也可以自定义搜索的tool。 这样我们的tools,可以支持在线搜索, 也可以支持针对我们定制化的任务执行。
定义一个agent
输入问题进行测试
case1, 公开问题,执行在线搜索 "How old is lebron james?"
case2 特定领域问题, 支持使用自定义tool完成任务: "what is the status of application app_name_1?"
参考:
- https://python.langchain.com/en/latest/modules/agents/tools/custom_tools.html
- https://github.com/gkamradt/langchain-tutorials/blob/main/LangChain%20Cookbook%20Part%201%20-%20Fundamentals.ipynb
- https://www.youtube.com/watch?v=_v_fgW2SkkQ&list=PLqZXAkvF1bPNQER9mLmDbntNfSpzdDIU5
- https://www.bilibili.com/video/BV1bh411j7mE/?p=7