开源工具集成平台 赋能语言模型新能力
BMTools是一个开源项目,通过工具扩展语言模型能力,为社区提供工具构建和共享平台。该项目支持创建插件和使用ChatGPT插件,优化开源工具使用。BMTools提供单一和多工具接口,集成本地和在线工具,鼓励社区贡献。项目为研究人员提供工具学习和开发环境,推动语言模型与工具的融合研究。
阅读中文版。
<br> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/2f8bae2a-20a4-4ce8-8aa8-0526b7036c26.png" width="700px"> </div> <br>BMTools是一个开源仓库,它通过工具扩展语言模型的能力,并为社区提供构建和分享工具的平台。在这个仓库中,你可以(1)通过编写Python函数轻松构建插件 (2)使用外部ChatGPT插件。
这个项目受到开源项目LangChain的启发,并针对ChatGPT-Plugins等开源工具的使用进行了优化,力求成为ChatGPT插件的开源学术版本。
有关新功能和进一步开发,请访问XAgent。
使用BMTools操作元分析工具的演示。
[2023/5/28] 我们发布了ToolBench,这是一个大规模工具学习基准,同时附带一个强大的模型。
[2023/5/25] 论文中使用的部分评估数据已在data-test发布,我们还创建了大规模SFT(100k+)高质量工具使用训练数据,可在data-sft获取。
[2023/5/19] 新增支持三种工具:百度地图、谷歌学术搜索和Zillow
[2023/5/18] WebCPM被ACL 2023接收,这是WebGPT的中文版本。
git clone git@github.com:OpenBMB/BMTools.git cd BMTools pip install --upgrade pip pip install -r requirements.txt python setup.py develop
支持CPM-Bee:
git clone -b main --single-branch https://github.com/OpenBMB/CPM-Bee.git cp -rf CPM-Bee/src/cpm_live bmtools/models/
将你的API密钥添 加到secret_keys.sh,然后启动本地工具
source secret_keys.sh python host_local_tools.py
然后将插件的URL设置为http://127.0.0.1:8079/tools/{tool_name}/
(记得在末尾加上/
)。
只需使用指向.well-known/ai-plugin.json
的URL加载它
例如,将URL设置为https://www.klarna.com/
,其中https://www.klarna.com/.well-known/ai-plugin.json
是一个有效的配置。
from bmtools.agent.singletool import load_single_tools, STQuestionAnswerer tool_name, tool_url = 'klarna', 'https://www.klarna.com/' tool_name, tool_config = load_single_tools(tool_name, tool_url) print(tool_name, tool_config) stqa = STQuestionAnswerer() agent = stqa.load_tools(tool_name, tool_config) agent("{你的问题}")
我们可以同时使用多个工具。基本上,语言模型会递归地执行这个过程。它会将整个工具视为一个API,向其发送问题,然后工具会调用其子API来解决问题并将结果返回给父工具。
尝试使用以下脚本来实现这个功能:
from bmtools.agent.tools_controller import load_valid_tools, MTQuestionAnswerer tools_mappings = { "klarna": "https://www.klarna.com/", "chemical-prop": "http://127.0.0.1:8079/tools/chemical-prop/", "wolframalpha": "http://127.0.0.1:8079/tools/wolframalpha/", } tools = load_valid_tools(tools_mappings) qa = MTQuestionAnswerer(openai_api_key='', all_tools=tools) agent = qa.build_runner() agent("9H-咔唑-3-甲醛中有多少个苯环?sin(x)*exp(x)的图像是什么样的?它从0到1的积分是多少?")
在web_demo.py开头的映射中添加你的插件
启动网页演示
python web_demo.py
要在本地开发工具,你需要编写一个Python函数来构建工具并将其注册到注册表中。
例如,你可以编写一个能执行Python代码并返回结果的工具。以下是示例代码:
from bmtools.tools import Tool from pydantic import BaseModel class ExecutionQuery(BaseModel): code: str class ExecutionResult(BaseModel): result: str def build_python_tool(config) -> Tool: tool = Tool( "PythonTool", "一个可以执行Python代码的插件", name_for_model="python", description_for_model="一个可以执行Python代码的插件", contact_email="your@email", ) @tool.post("/execute") def execute_python_code(query : ExecutionQuery) -> ExecutionResult: return ExecutionResult( result=eval(query.code) ) return tool
然后你需要使用以下代码将工具注册到注册表中:
from bmtools.tools import register @register("python") def register_python_tool(): return build_python_tool
这里我们将工具注册为名称"python"。
开发完工具后,你可以按照以下步骤为BMTools做出贡献:
bmtools/tools/{tool_name}
中创建一个文件夹api.py
:bmtools/tools/{tool_name}/api.py
和一个__init__.py
:bmtools/tools/{tool_name}/__init__.py
__init__.py
文件中注册工具__init__.py
文件中导入你的工具test.py
来自动测试你的工具readme.md
,包含简短介绍、贡献者信息或任何你想让其他人知道的内容你编写的函数将被转换为与OpenAI插件兼容的接口。AI模型将读取工具的名称、描述以及工具API的名称和描述。你可以调整以下方面,使AI模型更好地理解你的API:
name_for_model
(告诉模型这个工具是什么)description_for_model
(这将在工具被调用之前显示给模型,你可以包含如何使用API的信息)@tool.get()
中的名称。最好这两个名称匹配,因为名称在模型的API选择中起着重要作用一个简单的参考示例是Wolfram Alpha API。
如果你在研究中使用了BMTools,请引用:
@misc{qin2023tool, title={Tool Learning with Foundation Models}, author={Yujia Qin and Shengding Hu and Yankai Lin and Weize Chen and Ning Ding and Ganqu Cui and Zheni Zeng and Yufei Huang and Chaojun Xiao and Chi Han and Yi Ren Fung and Yusheng Su and Huadong Wang and Cheng Qian and Runchu Tian and Kunlun Zhu and Shihao Liang and Xingyu Shen and Bokai Xu and Zhen Zhang and Yining Ye and Bowen Li and Ziwei Tang and Jing Yi and Yuzhang Zhu and Zhenning Dai and Lan Yan and Xin Cong and Yaxi Lu and Weilin Zhao and Yuxiang Huang and Junxi Yan and Xu Han and Xian Sun and Dahai Li and Jason Phang and Cheng Yang and Tongshuang Wu and Heng Ji and Zhiyuan Liu and Maosong Sun}, year={2023}, eprint={2304.08354},
archivePrefix={arXiv}, primaryClass={cs.CL} }
## 星标历史
<br>
<div align="center">
<img src="https://api.star-history.com/svg?repos=OpenBMB/BMTools&type=Date" width="600px">
</div>
<br>
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。