线束管道代理
一个AI驱动的代理,使用LangChain、OpenAI和Harness.io MCP服务器生成Harness.i0管道和连接器YAML配置。代理通过使用FastAPI构建的REST API公开其功能。
特性
- 从自然语言描述生成Harness.io管道YAML
- 生成Harness.io连接器YAML配置
- 查询现有管道和连接器
- 通过MCP服务器集成与Harness.io交互
- 带有交互式文档的RESTful API
- 由OpenAI GPT-4和LangChain提供技术支持
建筑
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ FastAPI │─────>│ LangChain │─────>│ Harness MCP │
│ REST API │ │ Agent │ │ Server │
└─────────────┘ └──────────────┘ └─────────────────┘
│
▼
┌──────────────┐
│ OpenAI │
│ GPT-4 │
└──────────────┘先决条件
- Python 3.9或更高版本
- OpenAI API密钥
- 具有API访问权限的Harness.io帐户
- 安装并配置了Harness.io MCP服务器
快速开始
Docker(推荐)
运行应用程序最简单的方法是使用Docker:
# 1. Configure environment
cp .env.example .env
# Edit .env with your credentials
# 2. Place Harness MCP server binary
cp /path/to/harness-mcp mcp_server/harness-mcp
# 3. Build and run
./build-docker.sh
docker-compose up -d看 医生.md 了解详细的Docker部署说明。
安装(本地开发)
- 克隆或导航到项目目录:
cd harness_agent- 创建虚拟环境:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
cp .env.example .env编辑 .env 使用您的凭据:
OPENAI_API_KEY=your_openai_api_key_here
HARNESS_ACCOUNT_ID=your_harness_account_id
HARNESS_API_KEY=your_harness_api_key
HARNESS_API_URL=https://app.harness.io
HARNESS_DEFAULT_ORG_ID=default
HARNESS_DEFAULT_PROJECT_ID=default
MCP_SERVER_PATH=path_to_harness_mcp_server
# Optional: LangSmith Tracing
LANGCHAIN_TRACING_V2=false
LANGCHAIN_API_KEY=your_langsmith_api_key_here
LANGCHAIN_PROJECT=harness-agent运行应用程序
选项1:使用启动脚本(Unix/Mac)
./run.sh选项2:手动启动
source venv/bin/activate
python main.py选项3:直接使用uvicorn
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadAPI将于 http://localhost:8000
文档
📚 完整的文件
📖 用户指南
✨ 特性
- LangSmith追踪 -可观察性和调试
🔧 发展
API文档
应用程序运行后,您可以访问:
- 交互式API文档(Swagger UI):
http://localhost:8000/docs - API替代文件(ReDoc):
http://localhost:8000/redoc
API终点
健康检查
GET /health返回代理和MCP连接的运行状况。
生成管道
POST /api/v1/generate/pipeline
Content-Type: application/json
{
"request": "Create a CI pipeline for a Python application with build, test, and deploy stages"
}生成连接器
POST /api/v1/generate/connector
Content-Type: application/json
{
"request": "Create a GitHub connector for my repository https://github.com/myorg/myrepo"
}通用查询
POST /api/v1/query
Content-Type: application/json
{
"request": "List all available pipelines in my Harness account"
}使用示例
示例1:生成CI/CD管道
curl -X POST "http://localhost:8000/api/v1/generate/pipeline" \
-H "Content-Type: application/json" \
-d '{
"request": "Create a CI/CD pipeline for a Node.js application with these stages: 1) Build and run tests, 2) Build Docker image, 3) Deploy to Kubernetes"
}'示例2:生成GitHub连接器
curl -X POST "http://localhost:8000/api/v1/generate/connector" \
-H "Content-Type: application/json" \
-d '{
"request": "Create a GitHub connector named my-github with OAuth authentication"
}'示例3:查询现有资源
curl -X POST "http://localhost:8000/api/v1/query" \
-H "Content-Type: application/json" \
-d '{
"request": "Show me all pipelines in the production project"
}'项目结构
harness_agent/
├── main.py # FastAPI application
├── agent.py # LangChain agent implementation
├── mcp_client.py # Harness MCP client
├── models.py # Pydantic models for API
├── config.py # Configuration management
├── requirements.txt # Python dependencies
├── Dockerfile # Docker image definition
├── docker-compose.yml # Docker Compose configuration
├── build-docker.sh # Docker build script
├── .env.example # Example environment variables
├── .dockerignore # Docker build exclusions
├── .gitignore # Git ignore rules
├── run.sh # Local startup script
├── test_client.py # API test client
├── mcp_server/ # Harness MCP server binary location
│ └── README.md # MCP setup instructions
├── README.md # This file
├── DOCKER.md # Docker deployment guide
└── examples.md # Usage examples运作原理
- 用户请求:用户通过REST API发送请求
- 朗链代理:请求由OpenAI GPT-4支持的LangChain代理处理
- MCP集成:代理使用Harness MCP服务器中的工具与Harness.io进行交互
- YAML生成:代理生成或检索适当的YAML配置
- 回应:将YAML和任何其他信息返回给用户
发展
以开发模式运行
uvicorn main:app --reload --host 0.0.0.0 --port 8000运行测试
pytest tests/配置选项
可以在中配置以下环境变量 .env:
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
OPENAI_API_KEY | 您的OpenAI API密钥 | 是 | - |
HARNESS_ACCOUNT_ID | 线束帐户标识符 | 是 | - |
HARNESS_API_KEY | 线束API键 | 是 | - |
HARNESS_API_URL | 线束API URL | 否 | https://app.harness.io |
HARNESS_DEFAULT_ORG_ID | 管道的默认组织ID | 是 | - |
HARNESS_DEFAULT_PROJECT_ID | 管道的默认项目ID | 是 | - |
MCP_SERVER_PATH | 线束MCP服务器可执行文件的路径 | 是 | - |
API_HOST | API服务器主机 | 否 | 0.0.0.0 |
API_PORT | API服务器端口 | 否 | 8000 |
LANGCHAIN_TRACING_V2 | 启用LangSmith跟踪 | 否 | false |
LANGCHAIN_API_KEY | LangSmith API密钥 | 否 | - |
LANGCHAIN_PROJECT | LangSmith项目名称 | 否 | 线束代理 |
LangSmith追踪(可选)
LangSmith为您的AI代理提供可观察性和调试功能。启用后,它会自动跟踪:
- 所有代理执行
- LLM电话和回复
- 工具调用和结果
- 代币使用和成本
- 执行时间
启用LangSmith
- 注册地址: smith.langchain.com
- 从“设置”获取API密钥→ API密钥
- 添加到您的
.env文件:
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=your_langsmith_api_key
LANGCHAIN_PROJECT=harness-agent- 重新启动应用程序
就是这样!所有痕迹都将自动显示在您的LangSmith仪表板上。
你会看到什么
- 完整的执行跟踪 每一步都有定时
- LLM提示和响应 用于调试
- 工具调用 显示使用了哪些线束工具
- 令牌使用情况 用于成本跟踪
- 错误痕迹 用于调试失败
禁用跟踪
集 LANGCHAIN_TRACING_V2=false 或从中删除变量 .env.
故障排除
代理初始化失败
- 验证所有环境变量是否设置正确
- 检查线束MCP服务器路径是否正确
- 确保您的OpenAI API密钥有效
MCP连接错误
- 验证MCP服务器是否可访问
- 检查线束API证书
- 查看MCP服务器日志
管道生成失败
- 确保您的请求清晰具体
- 检查代理日志以了解详细的错误消息
- 验证线束帐户权限
安全注意事项
- 永不承诺
.env文件到版本控制 - 定期旋转API键
- 在生产环境中使用HTTPS
- 在生产环境中为API实施身份验证/授权
贡献
欢迎投稿!请确保您的代码遵循现有样式,并包含适当的测试。
许可证
MIT许可证-您可以随意使用此项目。
支持
关于以下问题:
- Harness.io:参观 线束文档
- OpenAI API:参观 OpenAI文档
- LangChain:参观 LangChain文档
致谢
- 内置于 快速API
- 由...驱动 LangChain
- 用途 OpenAI GPT-4
- 与集成 Harness.io
