InfoGPT - 让 ChatGPT/文心一言等大语言模型更易用

InfoGPT 是笔者学习ChatGPT等大语言模型过程中开发的一款开源软件,截至 v0.0.14 版本,支持 openai api 代理、电报机器人、微信公众号三个平台。微信公众号集成比较麻烦,会专门开一篇介绍。

项目地址:https://github.com/alwqx/infogpt

欢迎大家试用和提需求

对于个人用户

  1. OpenAI API 代理
  2. 共享 API Key

Telegram Bot

二进制运行

  1. 前往 releases 网页下载最新版本压缩包,这里以 Apple M2 芯片压缩包 infogpt-v0.0.14-darwin-arm64.tar.gz为例。
$ tar xzvf infogpt-v0.0.14-darwin-arm64.tar.gz
x README.md
x configs/
x configs/config.yaml
x infogpt
  1. 修改配置文件 configs/config.yaml
server:
  http:
    addr: 0.0.0.0:6060
    timeout: 300s
  grpc:
    addr: 0.0.0.0:6061
    timeout: 2s
admin:
  openai_api_key: ""
  proxy_url: ""
  gin_ratelimit: "20-D"
  telegram:
    token: ""
    # 机器人的请求限制,原则上应该比 user_ratelimit 大,为空则不进行限制
    ratelimit: ""
    # 每个用户的请求限制,为空则不进行限制
    user_ratelimit: "20-D"
    exclude_keys: ["foo", "bar"]
  wechat:
    app_id: ""
    app_secret: ""
    token: ""
    encoding_aes_key: ""
    # 机器人的请求限制,原则上应该比 user_ratelimit 大,为空则不进行限制
    ratelimit: ""
    # 每个用户的请求限制,为空则不进行限制
    user_ratelimit: "20-D"
    exclude_keys: ["foo", "bar"]
    auto_replay:
      "001": "infogpt infogpt1"
  1. 运行二进制文件
# geek @ geekdeMBP in ~/Downloads/infogptlab [22:18:36]
$ ./infogpt -conf configs
2023/04/18 22:18:54 maxprocs: Leaving GOMAXPROCS=12: CPU quota undefined
DEBUG msg=config loaded: config.yaml format: yaml
INFO module=service/admin ts=2023-04-18T22:18:54+08:00 caller=service.go:71 service.id=geekdeMBP.lan service.name= service.version= trace.id= span.id= msg=[NewAdminService] no proxy_url, use http.DefaultClient
WARN msg=[NewAdminService] not enable telegram bot, skip

[GIN-debug] GET    /hello                    --> infogpt/internal/server.ginHello (5 handlers)
[GIN-debug] GET    /openaiproxy/*path        --> infogpt/internal/server.openaiProxy (5 handlers)
WARN msg=not enable wechat, skip

注意:默认只有代理功能,即把向 infogpt 发送的请求转发到 OpenAI 的 API server。

  1. 后台运行
nohup ./infogpt -conf configs > infogpt.log 2>&1 &
  1. 请求 demo
$ curl --location 'localhost:6060/openaiproxy/v1/completions' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
    "model": "text-davinci-003",
    "prompt": "你好",
    "max_tokens": 1024,
    "temperature": 0
  }'
{
  "id": "cmpl-76grTMyULgpL8MT8iAyqR9ZChwyqX",
  "object": "text_completion",
  "created": 1681829083,
  "model": "text-davinci-003",
  "choices": [
    {
      "text": "\n\n 你好!",
      "index": 0,
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 4,
    "completion_tokens": 9,
    "total_tokens": 13
  }
}

详情参考文档 deploy

Docker 运行

docker run -d --name infogpt --rm -p 6060:6060 -p 6061:6061 -v </path/to/your/configs>:/data/conf infogpt:latest

TODOs

  • 支持 OpenAI Proxy
  • REST/gRPC 接口
    • 聊天
    • 生成网页文章摘要
    • 生成书籍内容摘要
  • Telegram
    • /chat /url /book 三个命令
    • 使用频率限制
  • WeChat 公众号有限支持
    • 使用频率限制
    • 超时缓存问答
  • 支持 ChatGPT Proxy
  • Slack
  • 生成文件内容摘要

致谢

本开源项目的开发,离不开这些开源项目的支持: