CData Connect人工智能代理聊天机器人
一个生产就绪的聊天机器人 Claude代理SDK 连接到 CData连接AI MCP服务器演示如何构建具有状态对话、自动上下文管理和本地MCP工具集成的AI代理。
特性
- 🧠 有状态的对话:跨多个回合的自动上下文管理
- 🛠️ 内置工具框架:本地MCP工具与适当的生命周期管理集成
- 🎯 生产准备就绪:基于为Claude Code提供动力的同一代理工具构建
- ⚡ 上下文管理:自动压缩上下文以防止上下文溢出
- 🎛️ 高级控制:细粒度权限、挂钩和行为自定义
- 🔌 连接到CData Connect AI MCP服务器
https://mcp.cloud.cdata.com/mcp/ - 🔐 使用电子邮件和个人访问令牌进行基本身份验证
- 🤖 通过代理SDK使用Claude Sonnet 4.5
- 💬 动态MCP工具加载和集成
- 🖥️ 交互式命令行界面
- ⚡ 异步/等待架构,以获得更好的性能
*有兴趣将连接嵌入到您的产品中吗?*
了解更多关于人工智能嵌入式云的信息:
先决条件
- Python 3.8+ -下载自 python.org 或通过软件包管理器安装
- 点 -Python的包安装程序(包含在Python 3.4+中)。证实
pip --version或pip3 --version - 一 无烟煤API键
- A. CData连接AI帐户 (免费试用)
设置
- 安装依赖项:
pip install -r requirements.txt- 设置环境变量:
cp .env.example .env
# Edit .env and add your credentials- 运行聊天机器人:
python3 agent_chatbot.py配置
所需的环境变量
ANTHROPIC_API_KEY:您的Anthropic API密钥CDATA_EMAIL:您的CData帐户电子邮件CDATA_ACCESS_TOKEN:您的CData个人访问令牌
获取您的CData Connect AI凭据
- 注册于 CData连接AI
- 添加数据源连接(例如,谷歌表格、Salesforce、HubSpot)
- 导航到 设置 > 访问令牌 > 创建PAT
- 立即复制令牌(它只显示一次!)
- 使用您的帐户电子邮件
CDATA_EMAIL以及PATCDATA_ACCESS_TOKEN
设置凭据
export ANTHROPIC_API_KEY="your_api_key"
export CDATA_EMAIL="your_email@example.com"
export CDATA_ACCESS_TOKEN="your_personal_access_token"或者创建一个 .env 文件:
cp .env.example .env
# Edit .env with your credentials用法
交互模式(状态会话)
python3 agent_chatbot.py聊天机器人创建了一个 有状态会话 使用 ClaudeSDKClient,其中:
- 自动维护对话上下文
- 跟踪各回合的工具使用情况
- 管理内存和上下文压缩
程序化使用
一次性查询
from agent_chatbot import MCPAgentChatbot
import asyncio
async def main():
chatbot = MCPAgentChatbot(
mcp_server_url="https://mcp.cloud.cdata.com/mcp/",
email="your_email@example.com",
access_token="your_personal_access_token"
)
# Single query (creates new session)
response = await chatbot.chat_once("What data sources are available?")
print(response)
asyncio.run(main())有状态的对话
from agent_chatbot import MCPAgentChatbot
import asyncio
async def main():
chatbot = MCPAgentChatbot(
mcp_server_url="https://mcp.cloud.cdata.com/mcp/",
email="your_email@example.com",
access_token="your_personal_access_token"
)
# Create stateful session
client = chatbot.create_session()
# Multiple turns with context
async with client:
response1 = await chatbot.chat_session(client, "List my data sources")
response2 = await chatbot.chat_session(client, "Tell me more about the first one")
asyncio.run(main())运作原理
代理SDK架构
- MCP工具发现:从CData Connect AI获取可用工具
- 工具包装:使用将MCP工具转换为代理SDK格式
@tool装饰器 - MCP服务器创建:使用创建SDK兼容的MCP服务器
create_sdk_mcp_server() - 代理配置:设置
ClaudeAgentOptions具有工具和权限 - 有意义的会议:用途
ClaudeSDKClient用于连续对话 - 自动工具调用:Agent SDK自动处理工具执行生命周期
关键组件
1.工具包装
@tool(
name="data_source_query",
description="Query a data source",
input_schema={"type": "object", ...}
)
async def tool_handler(args):
result = mcp_client.call_tool("data_source_query", args)
return {"content": [{"type": "text", "text": json.dumps(result)}]}2.MCP服务器集成
mcp_server = create_sdk_mcp_server(
name="cdata_connect",
tools=[tool1, tool2, ...]
)3.代理配置
options = ClaudeAgentOptions(
system_prompt="You are a helpful assistant...",
mcp_servers={"cdata_connect": mcp_server}, # Dictionary of MCP servers
permission_mode="bypassPermissions" # Options: "default", "acceptEdits", "bypassPermissions", "plan"
)4.有礼貌的客户
client = ClaudeSDKClient(options=options)
# Maintains context automatically using async context manager
async with client:
await client.query("First question")
async for msg in client.receive_response():
print(msg)
await client.query("Follow-up question")
async for msg in client.receive_response():
print(msg)主要优势
1.自动上下文管理
- 无手动对话历史记录跟踪
- 接近极限时自动压缩上下文
- 内置内存管理
2.本地工具集成
- 工具是一流公民
- 自动工具调用生命周期
- 更好的错误处理和重试
3.生产就绪模式
- 会话管理
- 权限控制
- 可定制的挂钩系统
4.更好的开发人员体验
- 始终异步/等待
- 流媒体支持
- 更清晰的抽象
故障排除
身份验证错误(401)
- 验证您的CData电子邮件是否正确
- 确保您的个人访问令牌有效且未过期
- 检查您是否可以访问CData Connect AI服务
工具加载问题
- 验证与的连接
https://mcp.cloud.cdata.com/mcp/ - 检查网络连接和防火墙设置
- 确保MCP服务器正在响应
tools/list请求:
代理SDK错误
- 确保
claude-agent-sdk已安装:pip install claude-agent-sdk - 检查你是否使用Python 3.8+
- 验证您的
ANTHROPIC_API_KEY设置正确
项目结构
connect-ai-claude-agent/
├── agent_chatbot.py # Standalone chatbot script
├── src/
│ └── connectai_claude/ # Library package
│ ├── __init__.py
│ ├── config.py # Configuration management
│ ├── mcp_client.py # MCP server communication
│ └── agent.py # Agent SDK integration
├── examples/
│ ├── basic_chat.py # Interactive chat example
│ ├── one_off_query.py # Single query example
│ ├── data_exploration.py # Direct MCP client usage
│ └── programmatic_usage.py # Multi-turn conversation example
├── docs/
│ └── API.md # API documentation
├── tests/ # Unit tests
├── requirements.txt # Dependencies
├── pyproject.toml # Modern Python packaging
├── .env.example # Example environment file
└── LICENSE # MIT License可用的MCP工具
您的代理可以访问这些CData Connect AI工具:
| 工具 | 说明 |
|---|---|
getCatalogs | 列出可用的数据源连接 |
getSchemas | 获取特定目录的架构 |
getTables | 获取架构中的表 |
getColumns | 获取表的列元数据 |
queryData | 执行SQL查询 |
getProcedures | 列出存储过程 |
getProcedureParameters | 获取程序参数详细信息 |
executeProcedure | 执行存储过程 |
getInstructions | 获取数据源的驱动程序特定说明和最佳实践 |
SQL查询格式
执行查询时,请使用完全限定的表名:
SELECT [column1], [column2]
FROM [CatalogName].[SchemaName].[TableName]
WHERE [column1] = 'value'
ORDER BY [column2]
LIMIT 100了解更多
许可证
MIT许可证-请参阅 许可证 了解详情。
