一个可以将 Huggingface Spaces、魔搭创空间 及 Gradio ChatBot 自动转成免费 API 的 Npm 包。理论上支持所有带 chatbot 的空间,目前完美支持了 GPT4Free,ChatGPT,Llama 2,Vicuna,MPT-30B,Falcon,ChatGLM,通义千问 等众多模型空间。
由于目前 Huggingface 上的 ChatGPT 空间压力过大,导致调用延时明显变长。如果你有自己的 ChatGPT 账号,推荐使用 gpt-web。
- 体验 ChatGPT
npx gradio-chatbot
# or
npm install -g gradio-chatbot
chatbot
- 体验 Llama2
chatbot 2
# 或者
chatbot https://huggingface.co/spaces/huggingface-projects/llama-2-13b-chat
更多用法请输入 chatbot help
docker build . -t gradio-server
docker run --rm -it -p 8000:8000 gradio-server
你可以使用 npm 或者 yarn 来安装 gradio-chatbot,Node 版本需要 >= 18。
npm install gradio-chatbot
# or
yarn add gradio-chatbot
目前支持三种模式。
参考 快速上手。
为了方便使用,提供了两种形式的接口。
- 流式输出,直接访问 http://localhost:8000/api/conversation?model=0&text=hello 即可。
- 非流式输出,调用方式同 ChatGPT API。以下为调用示例。
curl http://127.0.0.1:8000/api/conversation \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "hello"}],
}'
import { GradioChatBot } from 'gradio-chatbot'
const bot = new GradioChatBot();
async function start() {
const message = await bot.chat('hello', {
onMessage(partialMsg) {
console.log('stream output:', partialMsg);
}
});
console.log('message', message);
}
start();
你也可以把你想要转换的空间地址输入进去,如 https://huggingface.co/spaces/h2oai/h2ogpt-chatbot
import { GradioChatBot } from 'gradio-chatbot'
const bot = new GradioChatBot({
url: 'https://huggingface.co/spaces/h2oai/h2ogpt-chatbot',
fnIndex: 35,
}); // 调用自定义 ChatBot 模型
async function start() {
console.log(await bot.chat('Hello'));
}
start();
除此之外,Npm 包里面已经内置了 10 个流行的 Huggingface Spaces、魔搭创空间,你可以直接传入模型序号使用。
import { GradioChatBot } from 'gradio-chatbot';
const bot = new GradioChatBot('1'); // 使用内置1号模型
async function start() {
console.log(await bot.chat('Tell me about ravens.'));
}
start();
更多示例请前往目录: Examples
注意:Huggingface 上的部分模型可能会收集你输入的信息,如果你对数据安全有要求,建议不要使用,使用自己搭建的模型是一个更好的选择。
import openai
openai.api_key = "dummy"
openai.api_base = "http://127.0.0.1:8080/v1"
# create a chat completion
chat_completion = openai.ChatCompletion.create(model="10", messages=[{"role": "user", "content": "Hello"}])
# print the completion
print(chat_completion.choices[0].message.content)
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'http://127.0.0.1:8080/v1'
});
async function main() {
const stream = await openai.chat.completions.create({
model: '10',
messages: [{ role: 'user', content: 'Hello' }],
stream: true,
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content || '');
}
}
main();
参见 API 文档
国内访问推荐使用魔搭社区提供的模型,访问速度更快更稳定。 更多好用模型欢迎在 issue 区提交贡献。
- 此 Npm 包需要
node >= 18
.
查看 CHANGELOG.md
- Huge thanks to @gradio/client
- OpenAI for creating ChatGPT 🔥
Apache 2.0 © LICENSE.