aws-agentcore-langgraph (免费版)
基于 AWS Bedrock AgentCore 与 LangGraph 的基础智能体部署助手.
输入格式
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | AgentCore 免费处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
安装
pip install bedrock-agentcore langgraph
# 安装 agentcore CLI
快速开始
from langgraph.graph import StateGraph, START
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode, tools_condition
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from typing import Annotated
from typing_extensions import TypedDict
# ...
class State(TypedDict):
messages: Annotated[list, add_messages]
# ...
builder = StateGraph(State)
builder.add_node("agent", agent_node)
builder.add_node("tools", ToolNode(tools))
builder.add_conditional_edges("agent", tools_condition)
builder.add_edge(START, "agent")
graph = builder.compile()
# ...
app = BedrockAgentCoreApp() # 端口 8080,提供 /invocations 与 /ping
@app.entrypoint
def invoke(payload, context):
result = graph.invoke({"messages": [("user", payload.get("prompt", ""))]})
return {"result": result["messages"][-1].content}
app.run()
核心能力
- AgentCore Runtime: 端口 8080 的 HTTP 服务,处理
/invocations与/ping端点 - LangGraph Routing:
tools_condition负责智能体到工具的路由,ToolNode负责执行 - AgentCore Memory: 托管式跨会话记忆(免费版仅支持基础 STM,不含 LTM)
AgentCore Runtime
针对AgentCore Runtime,自动解析输入参数、调度任务队列、格式化输出,返回结构化响应. 输入: 用户提供AgentCore Runtime相关的配置参数、输入数据和处理选项. 输出: 返回AgentCore Runtime的处理结果。- 验证返回数据的完整性和格式正确性
- 参考
AgentCore Runtime的配置文档进行参数调优
LangGraph Routing
针对LangGraph Routing,自动解析输入参数、调度任务队列、格式化输出,返回结构化响应. 输入: 用户提供LangGraph Routing相关的配置参数、输入数据和处理选项. 输出: 返回LangGraph Routing的处理结果。- 验证返回数据的完整性和格式正确性
- 参考
LangGraph Routing的配置文档进行参数调优
AgentCore Memory
针对AgentCore Memory,自动解析输入参数、调度任务队列、格式化输出,返回结构化响应. 输入: 用户提供AgentCore Memory相关的配置参数、输入数据和处理选项. 输出: 返回AgentCore Memory的处理结果。- 验证返回数据的完整性和格式正确性
- 参考
AgentCore Memory的配置文档进行参数调优
CLI 命令
| 命令 | 用途 |
|---|---|
agentcore configure -e agent.py --region us-east-1 | 初始化配置 |
agentcore launch --deployment-type container | 容器模式部署 |
agentcore dev | 热重载本地开发服务器 |
agentcore invoke '{"prompt": "Hello"}' | 测试调用 |
agentcore destroy | 清理资源 |
命名规则
- 以字母开头,仅含字母/数字/下划线,长度 1-48 字符
- 正确:
my_agent错误:my-agent
适用场景
| 场景 | 输入 | 输出 |
|---|---|---|
| 单智能体部署 | 智能体定义与工具列表 | 容器化部署的 HTTP 智能体服务 |
不适用于: 多智能体编排、跨会话 LTM 记忆、Gateway 工具集成(需升级付费版).
依赖说明
运行环境
- Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
- 操作系统: Windows / macOS / Linux
依赖项
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
API Key 配置
需要配置对应API Key,详见上文环境配置章节
可用性分类
- 分类: MD+EXEC()
API Key配置方式:
export API_KEY="your_api_key_here"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
使用流程
- 安装
bedrock-agentcore、bedrock-agentcore、langgraph - 使用
StateGraph定义智能体图,通过tools_condition与ToolNode配置工具路由 - 用
BedrockAgentCoreApp()包装为 HTTP 服务 - 运行
agentcore configure初始化配置(注意命名规则:下划线而非连字符) - 运行
agentcore launch --deployment-type container部署 - 使用
agentcore invoke测试,完成后agentcore destroy清理
结果验证: 任务完成后,查看输出确认状态。成功时返回摘要和数据;失败时根据错误信息排查,参考恢复章节获取修复步骤.
案例展示
案例1: 单智能体工具调用
from langgraph.graph import StateGraph, START
from langgraph.prebuilt import ToolNode, tools_condition
from bedrock_agentcore.runtime import BedrockAgentCoreApp
# ...
# 定义工具
def search_tool(query: str) -> str:
return f"搜索结果: {query}"
# ...
tools = [search_tool]
builder = StateGraph(State)
builder.add_node("agent", agent_node)
builder.add_node("tools", ToolNode(tools))
builder.add_conditional_edges("agent", tools_condition)
builder.add_edge(START, "agent")
graph = builder.compile()
# ...
app = BedrockAgentCoreApp()
@app.entrypoint
def invoke(payload, context):
result = graph.invoke({"messages": [("user", payload.get("prompt", ""))]})
return {"result": result["messages"][-1].content}
app.run()
错误处理
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
on-demand throughput isn't supported | 使用了不支持按需吞吐的推理配置 | 改用 us.anthropic.claude-* 推理配置文件 |
Model use case details not submitted | 未提交 Anthropic 模型用例申请 | 在 Bedrock 控制台填写 Anthropic 用例表单 |
Invalid agent name | 智能体名称含连字符等非法字符 | 使用下划线而非连字符,如 my_agent |
| 容器未读取 .env 文件 | 容器运行时不加载 .env | 在 Dockerfile 中用 ENV 设置环境变量 |
| 端口 8080 被占用 | 本地已有进程占用 8080 | 停止占用进程或修改 BedrockAgentCoreApp 端口 |
| Platform mismatch warning | 本地与目标平台架构不一致 | 正常现象,CodeBuild 会处理 ARM64 跨平台构建 |
常见问题
Q1: tools_condition 路由如何工作?
A: tools_condition 是 LangGraph 预置的条件边函数,根据智能体节点输出中是否包含工具调用,自动路由到 ToolNode 执行或到 END 结束.
Q2: 智能体名称为何报 Invalid agent name?
A: 名称必须以字母开头,仅含字母/数字/下划线,长度 1-48 字符。使用 my_agent 而非 my-agent.
Q3: 免费版与付费版有何区别?
A: 免费版仅支持单智能体部署与基础 STM 记忆;付费版增加多智能体编排、跨会话 LTM、Gateway 工具集成(Lambda/MCP)、完整错误诊断与案例库.
Q4: 如何部署不带记忆的智能体?
A: 使用 agentcore launch --disable-memory。适用于无状态工具型智能体,可降低成本与延迟.
已知限制
- 仅支持单智能体部署,不支持多智能体编排(Orchestrator + Specialists)
- 不含跨会话 LTM 记忆,仅支持基础会话内 STM
- 不含 Gateway 工具集成,无法将 Lambda/REST 转为 MCP 工具
- 依赖 AWS 云服务,需要网络连接与有效的 AWS 凭证
- Bedrock 模型需在控制台提前申请用例并配置推理配置文件
升级提示
本免费版提供基础单智能体部署能力。如需多智能体编排、跨会话 LTM 记忆、 Gateway 工具集成(Lambda/MCP/REST)、完整错误诊断(10+ 场景)与 3 个 进阶案例,请升级至 AgentCore LangGraph 付费版.
输出格式
{
"success": true,
"data": {
"result": "AgentCore 免费处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "aws-agentcore-langgraph"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}
评论
加载中…