Strands Python SDK 中工具调用方法变更详解

Strands Python SDK 中工具调用方法变更详解

sdk-python A model-driven approach to building AI agents in just a few lines of code. sdk-python 项目地址: https://gitcode.com/gh_mirrors/sdkpython13/sdk-python

背景介绍

Strands Python SDK 是一个用于构建智能代理的开发框架,在最新版本中引入了一项重要的API变更——工具调用方式的调整。这项变更影响了开发者使用内存工具(memory)和LLM工具的方式,需要开发者特别注意。

问题现象

在早期版本中,开发者可以直接通过agent.memory()的方式调用内存工具功能。但在最新版本中,这种调用方式会导致AttributeError: 'Agent' object has no attribute 'memory'错误。类似地,mem0_memory工具也出现了导入问题。

技术解析

工具调用方式的演进

Strands SDK团队对工具调用方式进行了重构,主要变更点包括:

  1. 命名空间隔离:所有工具调用现在必须通过.tool属性访问,这是为了避免工具方法与Agent核心方法产生命名冲突。

  2. 导入路径规范化:内存工具应从strands_tools直接导入,而不是从strands_tools.memory子模块导入。

正确使用方法

内存工具的正确调用
from strands import Agent
from strands_tools import memory, use_llm

# 初始化代理并添加工具
memory_agent = Agent(tools=[memory, use_llm])

# 存储内容到知识库
memory_agent.tool.memory(
    action="store",
    content="重要信息",
    title="会议记录",
    STRANDS_KNOWLEDGE_BASE_ID="示例ID"
)

# 从知识库检索内容
memory_agent.tool.memory(
    action="retrieve",
    query="会议信息",
    min_score=0.7,
    STRANDS_KNOWLEDGE_BASE_ID="示例ID"
)
mem0_memory工具的使用

mem0_memory工具在v0.1.1版本中已可用,安装更新后可以正常导入:

from strands_tools import mem0_memory

agent = Agent(tools=[mem0_memory])

升级注意事项

  1. 版本要求:确保安装了strands-agents-tools v0.1.1或更高版本。

  2. 代码迁移:检查现有代码中所有工具调用,将agent.tool_name()改为agent.tool.tool_name()

  3. 导入语句:统一使用from strands_tools import tool_name的导入方式。

设计考量

这种变更虽然带来了短期的不兼容,但从长期来看有以下优势:

  1. 清晰的命名空间:将工具方法与核心方法分离,提高代码可读性。

  2. 更好的扩展性:为未来可能添加的更多工具类型预留了空间。

  3. 减少冲突:避免工具名称与Agent内置方法名称冲突的风险。

总结

Strands Python SDK通过引入.tool命名空间,为工具调用提供了更加规范和安全的访问方式。开发者应及时更新代码以适应这一变更,这将为后续的功能扩展和维护带来便利。对于遇到类似问题的开发者,检查工具调用语法和SDK版本是首要的排查步骤。

sdk-python A model-driven approach to building AI agents in just a few lines of code. sdk-python 项目地址: https://gitcode.com/gh_mirrors/sdkpython13/sdk-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶臣力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值