项目简介
"Self-Service Agent Blueprint" 是一个为IT团队、DevOps工程师和解决方案架构师设计的快速启动项目,旨在帮助组织通过生成式AI实现IT流程的自助服务自动化。它提供了一个可重用的平台,包含核心代理服务、请求管理器、集成调度器以及与外部系统集成的MCP服务器,如ServiceNow。项目支持多种通信渠道(CLI、Slack、Email),并强调可观测性、评估和安全性,以构建生产级的AI代理系统。
主要功能点
- AI代理框架: 利用Llama Stack和LangGraph构建智能对话代理,管理复杂的对话流程和工作流。
- MCP服务器集成: 通过Model Context Protocol (MCP) 服务器标准化地连接外部系统(如ServiceNow),提供资源访问和工具调用能力。
- 知识库管理: 使用基于向量的知识库(通过Llama Stack)存储策略文档和流程指南,支持检索增强生成(RAG)。
- 多渠道支持: 集成CLI、Slack和Email,使用户可以通过熟悉的平台与AI代理交互。
- 可观测性: 深度集成OpenTelemetry,提供分布式追踪能力,帮助监控、调试和优化代理系统的复杂交互。
- 评估框架: 包含AI专用的评估工具,通过预定义对话流和生成式场景验证代理的行为和业务需求。
- 安全防护: 支持Llama Guard等安全模型,提供内容审核和安全防护机制。
- 会话管理: 管理用户会话状态和代理路由,支持从路由代理到专业代理的无缝切换。
安装步骤
- 克隆仓库: 'git clone https://github.com/RHEcosystemAppEng/self-service-agent-blueprint.git'
- 进入项目目录: 'cd self-service-agent-blueprint'
- 安装本地工具: 确保您的系统已安装Python 3.12+、uv、Podman、Helm、oc CLI、git和make。
- OpenShift/Kubernetes集群准备: 准备一个OpenShift或Kubernetes集群。对于生产环境,还需要安装Serverless Operator和Streams for Apache Kafka Operator。
- 配置环境变量:
export NAMESPACE=您的OpenShift项目名称 # 例如:my-ai-agent export LLM=llama-3-3-70b-instruct-w8a8 # 或您选择的模型ID export LLM_ID=llama-3-3-70b-instruct-w8a8 export LLM_API_TOKEN=您的LLM服务API令牌 export LLM_URL=您的LLM服务API端点 # 例如:https://api.llamastack.ai/v1 export HF_TOKEN=1234 # 如果不需要本地托管LLM,可设为任意值 # 可选:如果部署到私有容器仓库,需要设置 REGISTRY # export REGISTRY=quay.io/您的组织 - 部署到OpenShift (测试模式):
oc login --server=https://your-cluster:6443 # 登录OpenShift oc new-project $NAMESPACE # 创建项目 make helm-install-test NAMESPACE=$NAMESPACE # 部署 - 验证部署:
确认所有Pod都在运行状态,并且路由已创建。make helm-status NAMESPACE=$NAMESPACE oc get pods -n $NAMESPACE oc get routes -n $NAMESPACE
服务器配置
此仓库包含一个名为 'mcp-servers/snow' 的ServiceNow集成MCP服务器,它将ServiceNow功能暴露为可供AI代理调用的工具。您的MCP客户端(例如,一个LLM编排服务,如此项目中的'agent-service')可以通过JSON-RPC协议与此ServiceNow MCP服务器建立连接,以访问ServiceNow的资源和工具。
以下是MCP客户端可以用来配置与'mcp-servers/snow'连接的示例信息:
{ "server_name": "servicenow-mcp-server", "description": "提供ServiceNow资源访问和工具调用能力的MCP服务器,例如获取员工笔记本信息和创建笔记本刷新工单。", "connection_type": "http", "command": "uvicorn", "args": [ "mcp_snow.main:app", "--host", "0.0.0.0", "--port", "8080" ], "environment_variables": { "SERVICENOW_INSTANCE_URL": "您的ServiceNow实例URL,例如:https://your-instance.service-now.com", "SERVICENOW_API_KEY": "ServiceNow集成使用的API密钥", "SERVICENOW_LAPTOP_REFRESH_ID": "ServiceNow中笔记本刷新工单的ID (可选)" }, "endpoint_url": "http://mcp-snow.您的OpenShift项目名称.svc.cluster.local:8080" }
- server_name: MCP服务器的唯一标识符,在此处是"servicenow-mcp-server"。
- description: 对服务器功能的简要描述。
- connection_type: 服务器的连接类型,这里是"http"。
- command: 启动MCP服务器进程的命令,此处为'uvicorn'。
- args: 启动命令的参数列表,例如指定MCP服务器的应用程序入口、监听地址和端口。
- environment_variables: 启动MCP服务器所需的环境变量,用于配置ServiceNow连接详情。
- endpoint_url: 部署后MCP服务器的实际访问地址。在OpenShift集群内部,通常是'http://服务名称.命名空间.svc.cluster.local:端口'。
基本使用方法
- 通过CLI交互:
- 获取请求管理器Pod名称: 'export REQUEST_MANAGER_POD=$(oc get pod -n $NAMESPACE -l app=self-service-agent-request-manager -o jsonpath='{.items[0].metadata.name}')'
- 启动聊天会话: 'oc exec -it $REQUEST_MANAGER_POD -n $NAMESPACE -- python test/chat-responses-request-mgr.py --user-id [email protected]'
- 在CLI中输入 'I need help with my laptop refresh' 等消息,与代理进行互动。
- Slack集成 (可选):
- 按照 'guides/SLACK_SETUP.md' 指导配置Slack应用。
- 在Slack中直接@您的机器人并发送消息,如 '@Self-Service Agent hi'。
- ServiceNow集成 (可选):
- 按照 'guides/SERVICE_NOW_BOOTSTRAP_AUTOMATED.md' 或 'guides/SERVICE_NOW_BOOTSTRAP_MANUAL.md' 配置ServiceNow实例。
- 设置ServiceNow环境变量并升级Helm部署:
export SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com export SERVICENOW_API_KEY=your-servicenow-api-key export SERVICENOW_LAPTOP_REFRESH_ID=your-servicenow-laptop-refresh-id make helm-upgrade NAMESPACE=$NAMESPACE - 通过CLI或Slack测试笔记本刷新流程,确认ServiceNow工单是否实际创建。
- 运行评估:
- 进入评估目录: 'cd evaluations/'
- 安装评估依赖: 'pip install -e .'
- 运行预定义对话流: 'python run_conversations.py'
- 生成合成对话: 'python generator.py 5 --max-turns 20'
- 评估所有对话: 'python deep_eval.py'
- 查看评估报告以了解代理性能。
信息
分类
商业系统