chatgpt-tool-hub

chatgpt-tool-hub

开源工具生态系统为大语言模型增强实用功能

chatgpt-tool-hub是一个开源的大语言模型工具生态系统,提供联网、搜索、数学运算、控制电脑和执行代码等多种实用功能。用户可通过自然语言命令调用这些工具,提高生产力。该项目支持中英文交互、上下文记忆和多工具自动调用,旨在创建一个开放、灵活的人工智能助手平台,适配未来多样化的大语言模型需求。

ChatGPT工具引擎LLM人机交互插件Github开源项目
<h2 align='center'> chatgpt-tool-hub / ChatGPT工具引擎 </h2> <p align='center'>为ChatGPT装上手脚,拿起工具提高你的生产力</p> <p align="center"> <a style="text-decoration:none" href="https://github.com/goldfishh" target="_blank"> <img src="https://img.shields.io/pypi/pyversions/chatgpt-tool-hub" alt="语言" /> </a> <a style="text-decoration:none" href="https://github.com/goldfishh" target="_blank"> <img src="https://img.shields.io/github/license/goldfishh/chatgpt-tool-hub" alt="许可证" /> </a> <a style="text-decoration:none" href="https://github.com/goldfishh" target="_blank"> <img src="https://img.shields.io/github/commit-activity/w/goldfishh/chatgpt-tool-hub" alt="每周提交活动" /> </a> <a style="text-decoration:none" href="https://pypi.org/project/chatgpt-tool-hub/" target="_blank"> <img src="https://img.shields.io/pypi/dw/chatgpt-tool-hub" alt="PyPI每周下载量" /> </a> </p>

简体中文 | English

大语言模型的涌现能力让人惊艳,ChatGPT的出现为NLP技术带来了革命,除此之外还让我意识到一种新的人机交互的可能性

<div> <h2 style="display:inline; margin:0; padding:0;">🌱 5.4 LLM-OS demo在线演示</h2> <a style="display:inline-block; align:center" src="https://yellow-cdn.veclightyear.com/835a84d5/85b4984e-8dcc-4482-bb02-1b98a8235159.svg" href="https://colab.research.google.com/drive/11nYPGFCYiaZ73H8nTHSN8ifbo0u3W_8p"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/85b4984e-8dcc-4482-bb02-1b98a8235159.svg" alt="在Colab中演示"/> </a> </div> <br/> <div align="center"> <a style="text-decoration:none" href="https://www.bilibili.com/video/BV1eL411h7Nk/" target="_blank"> <img src="https://i.328888.xyz/2023/04/29/iJQNi3.jpeg" width = "659" height = "410" alt="LLM-OS" align=center /> </a> </div> <br/>

更新日志 | 常见问题

简介


这是一个能让ChatGPT使用多个神奇工具的执行引擎,你能用自然语言命令ChatGPT使用联网、搜索、数学运算、控制电脑、执行代码等工具,扩大ChatGPT的使用范围,提高你的生产力。

本项目因关注到ChatGPT开放插件而诞生,该插件定制性较差,且生态封闭,这不是一个好的趋势。我相信未来国内LLM一定百花齐放,同时我从ChatGPT看到了使用工具的可行性和潜在价值,因此我希望做一个能兼容未来LLM的工具生态。

如果把ChatGPT的插件比作Apple的App Store,那么这个项目的最终形态就是Android OS的开放式生态,简称LLM-OS。在这个生态里,所有工具组成一个操作系统,用户仅需输入或传述文字即可做任何事情。

鉴于目前状况,本项目的定位是:一个开源的ChatGPT工具生态系统,您可以将工具与ChatGPT结合使用,使用自然语言来完成任何事情。

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/d11844f7-40b6-451f-b895-c04a26bd8660.jpg" width="50%" height="50%"> </p>

特性


1. 可在 LLM-OS demo 中单独使用tool-hub

2. tool-hub以插件形式为 chatgpt-on-wechat 提供工具能力。详见 (tool插件使用教程)

3. 支持中、英文互动

4. 支持上下文记忆

5. 支持代理

6. 支持大量工具 工具指南 快速更新中

7. 支持多种工具同时且自动调用、树状编排工具

⛳ 看看tool-hub未来计划更新的特性:tool-hub todo-list

📭 去 issues 提提建议

✈️ 快速开始


1. LLM-OS demo

(1). 克隆仓库

git clone https://github.com/goldfishh/chatgpt-tool-hub.git cd chatgpt-tool-hub

(2). 使用pip安装本项目依赖

pip3 install -r requirements.txt

(3). 重命名.env.template 和 config.json.template文件,去掉.template后缀,打开文件填入配置参数

.env 用于配置全局参数 文件配置示例

LLM_API_KEY=sk-xx // 必填,你的OPENAI API Key,如何申请请见常见问题 MODEL_NAME=gpt-3.5-turbo // 选填,OPENAI LLM模型 THINK_DEPTH=3 // 选填,默认为3,控制LLM-OS的最大调用工具次数,过大不一定能提高回复质量 REQUEST_TIMEOUT=90 // 选填,默认120,等待openai api回复的最大时间 PROXY=http://192.168.7.1:7890 // 选填,当你需要代理访问openai时可填 DEBUG=false // 选填,debug模式

config.json 用于配置工具参数,文件配置示例如下:

{ "tools": [], // 填入你想使用的额外工具名 "kwargs": { "no_default": false, // 是否不使用默认工具,默认使用python、terminal、url-get、meteo-weather "top_k_results": 2, // 控制部分搜索工具(如arxiv、wikipedia)只返回前k条记录,不建议过多 // 需要额外申请api-key的工具,在这里填入 } }

需要额外申请工具的config.json配置示例请参见:工具申请方法与配置说明

(4). 执行terminal_io.py

python3 terminal_io.py

(5). 进入LLM-OS后你可以自行探索,或者进一步浏览详细教程:LLM_OS demo使用说明


2. 我为chatgpt-on-wechat开发了tool插件

使用本方法,你可以用微信作为前端更方便地使用tool-hub

请查阅chatgpt-on-wechat文档中的项目简介快速开始

注意:你需要安装拓展依赖才能使用tool插件

tool插件教程


3. 你是其他项目开发者,想要接入本工具引擎

本项目已发布到PyPI上,你只需使用pip命令即可安装

(1). 安装chatgpt-tool-hub包

pip install -i https://pypi.python.org/simple chatgpt-tool-hub

(2). 快速开始

import os from chatgpt_tool_hub.apps import AppFactory os.environ["LLM_API_KEY"] = "YOUR_LLM_API_KEY" # 必填 os.environ["PROXY"] = "YOUR_PROXY_ADDRESS" # 选填 app = AppFactory().create_app(tools_list=[], **{}) reply = app.ask("YOUR_QUESTION_TO_HERE") print(reply)

(3). 以插件形式接入tool-hub可参考tool插件实现

tool.py

如果有需求,我会更新更详细的接入文档,欢迎提issue


工具指南

🚀 工具指南 工具快速开发中


原理


工具引擎的实现原理本质是Chain-of-ThoughtChain-of-Thought Prompting Elicits Reasoning in Large Language Models

我将通过6个自问自答的问题解释chatgpt-tool-hub的工作原理

1. 事务型工具(如terminal、python)是在哪运行,以及如何执行的

事务型工具是在你本地运行的,事务型工具本质是一个用Python编写的函数,terminal、python、url-get工具分别用到了封装调用subprocess库、Python解释器和requests库的函数


2. ChatGPT是如何触发调用这些函数的

借助ChatGPT API提供的temperature参数,该参数越低,ChatGPT输出的结果会更集中和确定,当temperature为0时,相同的问题会得到统一回答
我在prompt构建时会提供给ChatGPT此时可用的工具列表信息,每个工具信息包含:工具名和工具描述:

TOOLS: ------ You have access to the following tools: > Python REPL: A Python shell. Use this to execute python commands. > url-get: A portal to the internet. Use this when you need to get specific content from a website. > Terminal: Executes commands in a terminal. > Bing Search: A wrapper around Bing Search. Useful for when you need to answer questions about current events.

有了工具prompt,这时ChatGPT就能理解这些工具名字和使用场景,调用事务函数还需要进一步细化我和ChatGPT之间的通信协议(仍是通过prompt): 通信协议限制ChatGPT使用工具时返回内容的格式,只能返回三种前缀的内容:

1. Thought: Do I need to use a tool? Yes or No 2. Action: 工具名字 3. Action Input: 工具的输入

通信协议完整prompt:

To use a tool, please use the following format: Thought: Do I need to use a tool? Yes Action: the action to take, should be one of [Python REPL, url-get, Terminal, Bing Search] Action Input: the input to the action Observation: the result of the action

此时,工具引擎有专用的文本解析模块负责解析这些内容,当解析成功后,将调度到具体事务函数执行,然后返回固定前缀的结果:

Observation: 当事务函数执行完成返回时的内容

带Observation前缀的内容往往是使用事务型工具的用户想知道的答案


3. ChatGPT如何知道该用的工具和输入,是否每次都严格按照prompt生成格式化内容

ChatGPT通过微调时进行大量Q&A、CoT预料的学习和RLHF调优,目前ChatGPT对于工具和内容生成的质量是有保证的
但是目前不是100%,因为会有低质量prompt或者不合适工具的输入,这些问题在工具引擎会进行鲁棒性的处理来保证生成内容的稳定性

我创建了一个issue,可以方便大家来获取和分享使用tool过程解决的有趣问题和思路、每个tool使用时的prompt技巧、遇到问题的处理办法: 更好地使用tool的技巧交流


4. 如果需要多个工具交替配合解决某个问题,引擎是怎么做的?

当事务函数处理完成返回结果后,默认不会直接返回给用户,而是根据结果内容进行思维链(CoT)推理。在整个提示中,还有两个子提示负责用户对话历史记录和中间结果。

用户对话历史记录:

Human: 问题 AI: 回答 ......

中间结果:

思考:我需要使用工具吗?是 行动:Wolfram Alpha 行动输入:中国与美国GDP对比 观察:中国\n美国 | GDP | 名义 回答:中国 | 每年14.72万亿美元 美国 | 每年20.95万亿美元 (2020年估计) 思考:

每轮工具CoT过程均会作为下次推理判断工具的依据,由此迭代地进行工具判断、执行,最后当识别到特定前缀时,CoT结果将返回给用户。

CoT结束提示:

当你有回应要对人类说,或者不需要使用工具时,你必须使用以下格式: 思考:我需要使用工具吗?不需要 AI:用中文回答原始输入问题

ChatGPT使用工具的过程并不总是顺利:当遇到迭代次数达到预设值时,会根据历史过程,返回给用户最后结果。


5. 将事务性工具交给ChatGPT是否具有不可预料的危险性?

是的,当你使用事务性工具时,你就赋予了ChatGPT在你本地运行程序的权限,你需要进行权限限制来规避可能的风险。 如果无法信任ChatGPT主导你的机器,请不要使用。


6. 非事务型工具的实现原理是什么

参考ChatGPT官方插件,非事务性工具也称为插件型工具,该工具可视为开放性的ChatGPT插件。


🎯 计划

<span id="plan"></span>


功能待办事项

[✓] 结果可解释性输出 -> LLM-OS的内心独白 [✓] 一个前端演示 -> LLM-OS [✓] 长文本场景 -> 摘要工具 [✓] 长工具顺序控制 -> 实现了工具中工具机制 [✓] 粒度配置 -> 每个工具封装的LLM可独立配置 [○] tokens计算,精确管理 [○] gpt_index长文本(pdf、html)检索 [○] 接口并发支持 [○] 接入国内LLM [○] 兼容不使用工具的场景 [○] 互斥工具控制 [○] 子树动态注册和反注册 [○] 工具中断 [○] 定时调度 [○] 语音输入、输出

工具待办事项

[○] stable-diffusion中文提示词翻译 [✓] 图像描述 [○] 小米智能家居控制 [○] 支持ChatGPT官方插件 [○] 让LLM来实现工具 [○] 支持图片处理工具 [○] 支持视频处理工具 [✗] 微信

工具开发指南


目前工具分为两类:事务型工具、插件型工具

工具开发教程

背景

我将很快更新这部分内容


☕ 宣传

如果你想支持本项目,欢迎给项目点个star、提issue和pr

如果你想进一步支持项目作者少掉头发,努力开发,可以给和我一起开发项目的伙伴或单独给我来杯☕

<table><tr> <td><a href="https://public.zsxq.com/groups/88885848842852.html"><img src="https://github.com/zhayujie/chatgpt-on-wechat/blob/master/docs/images/planet.jpg?raw=true" width="400" height="200" border=0></a></td> <td><img src="https://yellow-cdn.veclightyear.com/835a84d5/e97a1811-4ac7-42d5-ab09-7261bb9cae13.jpg" width="200" height="200" border=0 /></td> </tr></table>

感谢

感谢以下项目对本项目提供的有力支持:

1. langchain

受langchain的启发,本项目重写了langchain v0.0.123工具有关的实现

2. Auto-GPT

启发了浏览器工具跨平台的实现、工具引擎的JSON通信、部分提示描述

3. chatgpt-in-terminal

llm-os演示改写自该项目


编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多