Coder Social home page Coder Social logo

rockchinq / free-one-api Goto Github PK

View Code? Open in Web Editor NEW
491.0 14.0 68.0 1.37 MB

LLM 逆向工程接口管理 | 通过标准 OpenAI API 访问 ChatGPT / gpt4free / Bard / Claude / HuggingChat / 通义千问 等 AI 的破解版 || ChatGPT reverse engineering API management | Access all reverse engineered LLM libs by standard OpenAI API format || 免费 ChatGPT Free GPT LLM API | 逆向工程 转 OpenAI API | converts all llm libs to OpenAI API

Home Page: https://free-one-api.rockchin.top

License: GNU Affero General Public License v3.0

HTML 0.20% Vue 25.17% JavaScript 4.80% Python 69.56% Dockerfile 0.26%
chatgpt gpt one-api openai reverse-engineering revchatgpt proxy bard claude gpt4free

free-one-api's Introduction

Hi there 👋

🏘️ From Guilin (桂林), China. 🏘️

🏫 Undergraduate at TJUT, currently major in CS. 🏫

😍 Why not come to travel my hometown? 😍

Guilin City

Aerial photo of Guilin urban area, shot by @Cling

📦 主要项目&技术栈 PROJECTS
  • QChatGPT (Python, LLM, Flask, PyTest, Docker, SQLite) - 支持扩展的 LLM QQ / QQ频道 机器人🤖
  • Campux (Go, Gin, MongoDB, Redis, MinIO, Python, Vue, Vuetify, Docker) - QQ 空间校园墙自动化解决方案
  • free-one-api (Python, Flask, SQLite, Vue, ElementUI) - LLM 对话产品逆向工程接口网关
  • CallingGPT (Python, OpenAI) - 轻量级 LLM Agent 开发框架
  • qcg-center (Go, Gin, Grafana, MongoDB, Docker) - QChatGPT 的遥测服务端
  • qcg-tester (PyTest) - QChatGPT 的系统级测试工程
  • GhostJ (Java, Socket, Swing) - 基于 Socket 的远程控制平台
📊 GitHub Stats

RockChinQ

codersrank

📲 联系方式 CONTACTS

free-one-api's People

Contributors

dependabot[bot] avatar rockchinq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

free-one-api's Issues

无法更改端口

docker部署后,查看日志发现
全部最近7天最近30天
[2024-03-11 07:36:03.413] �[37m/app/free_one_api/impls/app.py (283) - [INFO] :
Application initialized.�[0m
[2024-03-11 07:36:03 +0000] [1] [INFO] Running on http://0.0.0.0:3000 (CTRL + C to quit)
[2024-03-11 07:36:03.419] �[37m/usr/local/lib/python3.10/site-packages/hypercorn/logging.py (106) - [INFO] :
Running on http://0.0.0.0:3000 (CTRL + C to quit)�[0m
[2024-03-11 07:36:08.425] �[37m/app/free_one_api/impls/watchdog/tasks/heartbeat.py (48) - [INFO] :
Start heartbeat task, 0 channels to process�[0m

不是我设置的端口

Long response truncated before finished

[2023-10-04 14:50:30 +0000] [1] [INFO] 172.19.0.3:40870 POST /v1/chat/completions 1.1 200 - 30392489
ERROR:asyncio:Future exception was never retrieved
future: <Future finished exception=CurlError("Failed to perform, ErrCode: 28, Reason: 'Operation timed out after 30001 milliseconds with 1474 bytes received'. This may be a libcurl error, See https://curl.se/libcurl/c/libcurl-errors.html first for more details.")>
curl_cffi.curl.CurlError: Failed to perform, ErrCode: 28, Reason: 'Operation timed out after 30001 milliseconds with 1474 bytes received'. This may be a libcurl error, See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

This can be a timeout bug of stream request to providers, which causes by g4f.

携带消息记录时 返回的内容包含之前的回复 CHATGPT

单消息发送是没问题的,问题出在多条消息

{
    "model": "gpt-3.5-turbo",
    "stream": false,
    "messages": [
        {
            "role": "system",
            "content": "You are Chatgpt, an OPENAI AI assistant. "
        },
        {
            "role": "user",
            "content": "hi"
        },
        {
            "content": "Hello! How can I assist you today?",
            "role": "assistant"
        },
        {
            "content": "我上一次发消息发了什么",
            "role": "user"
        }
    ]
}

回复

    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "content": "Hello! How can I assist you today?您上一次发送的消息是\"hi\"。有什么我可以帮助您的吗?",
                "role": "assistant"
            }
        }
    ],
    "created": 1703510267,
    "id": "chatcmpl-001RevChXIQRO9UCEc0ImXikcGUvs",
    "model": "gpt-3.5-turbo",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 40,
        "prompt_tokens": 41,
        "total_tokens": 81
    }
}

gpt能够读取消息 也能理解 但是在回复内容里 总是包含之前的答案 这个问题消息越长越明显

Audit system

add check status function,especially counting api usage and other imformation

Dead lock risk in database

[2023-10-06 16:24:25.512] selector_events.py (917) - [WARNING] : socket.send() raised exception.
[2023-10-06 16:24:25.515] base_events.py (1758) - [ERROR] : Task exception was never retrieved
future: <Task finished name='Task-1161' coro=<SQLiteDB.insert_log() done, defined at /app/free_one_api/impls/database/sqlite.py:147> exception=OperationalError('database is locked')>
Traceback (most recent call last):
  File "/app/free_one_api/impls/database/sqlite.py", line 149, in insert_log
    await db.execute("INSERT INTO log (timestamp, content) VALUES (?, ?)", (
  File "/usr/local/lib/python3.10/site-packages/aiosqlite/core.py", line 190, in execute
    cursor = await self._execute(self._conn.execute, sql, parameters)
  File "/usr/local/lib/python3.10/site-packages/aiosqlite/core.py", line 133, in _execute
    return await future
  File "/usr/local/lib/python3.10/site-packages/aiosqlite/core.py", line 106, in run
    result = function()
sqlite3.OperationalError: database is locked

KoushikNavuluri/Claude-API 的流式输出问题

似乎用KoushikNavuluri/Claude-API的时候并不支持流式输出,是一次返回的所有的内容:

curl https://localhost:3000/v1/chat/completions \
>   -X POST \
>   -H "Content-Type: application/json" \
>   -H "Authorization: Bearer xxxxxx" \
>   -d '{
>     "model": "gpt-3.5-turbo",
>     "messages": [
>       {
>         "role": "system",
>         "content": "You are a helpful assistant."
>       },
>       {
>         "role": "user",
>         "content": "请给我介绍一下什么是sql"
>       }
>     ],
>     "stream": true
>   }'
data: {"id": "chatcmpl-001ClaudueO50fF2qt3qth1BGWZIN", "object": "chat.completion.chunk", "created": 1698595517, "model": "gpt-3.5-turbo", "choices": [{"index": 0, "delta": {"content": " SQL \u5168\u79f0 Structured Query Language,\u610f\u4e3a\u7ed3\u6784\u5316\u67e5\u8be2\u8bed\u8a00,\u662f\u4e00\u79cd\u6570\u636e\u5e93\u67e5\u8be2\u548c\u7a0b\u5e8f\u8bbe\u8ba1\u8bed\u8a00,\u7528\u4e8e\u5b58\u53d6\u6570\u636e\u4ee5\u53ca\u67e5\u8be2\u3001\u66f4\u65b0\u548c\u7ba1\u7406\u5173\u7cfb\u6570\u636e\u5e93\u7cfb\u7edf\u3002SQL\u7684\u4e3b\u8981\u529f\u80fd\u5305\u62ec:\n\n1. DDL(Data Definition Language,\u6570\u636e\u5b9a\u4e49\u8bed\u8a00):\u7528\u6765\u5b9a\u4e49\u6570\u636e\u5e93\u5bf9\u8c61,\u6bd4\u5982\u6570\u636e\u5e93\u3001\u8868\u7b49\u3002\u5305\u62ecCREATE\u3001DROP\u3001ALTER\u7b49\u8bed\u53e5\u3002\n\n2. DML(Data Manipulation Language,\u6570\u636e\u64cd\u4f5c\u8bed\u8a00):\u7528\u6765\u67e5\u8be2\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u8bb0\u5f55\u3002\u5305\u62ecSELECT\u3001INSERT\u3001UPDATE\u3001DELETE\u7b49\u8bed\u53e5\u3002\n\n3. DCL(Data Control Language,\u6570\u636e\u63a7\u5236\u8bed\u8a00):\u7528\u6765\u63a7\u5236\u4e0d\u540c\u6570\u636e\u6bb5\u76f4\u63a5\u7684\u8bb8\u53ef\u548c\u8bbf\u95ee\u7ea7\u522b\u7684\u8bed\u53e5\u3002\u5305\u62ecGRANT\u3001REVOKE\u7b49\u8bed\u53e5\u3002 \n\n4. TCL(Transaction Control Language,\u4e8b\u52a1\u63a7\u5236\u8bed\u8a00):\u4e8b\u52a1\u63a7\u5236\u8bed\u53e5,\u786e\u4fdd\u6570\u636e\u5e93\u7684\u5b8c\u6574\u6027\u3002\u5305\u62ecCOMMIT\u3001ROLLBACK\u7b49\u8bed\u53e5\u3002\n\nSQL\u56e0\u4e3a\u5176\u7b80\u5355\u6613\u7528,\u5df2\u7ecf\u6210\u4e3a\u6700\u6d41\u884c\u7684\u6570\u636e\u5e93\u67e5\u8be2\u8bed\u8a00\u3002\u5927\u591a\u6570\u5173\u7cfb\u578b\u6570\u636e\u5e93\u7cfb\u7edf,\u5982Oracle\u3001MySQL\u3001SQL Server\u3001PostgreSQL\u7b49\u90fd\u652f\u6301SQL\u8bed\u8a00\u3002\u638c\u63e1SQL\u5bf9\u4e8e\u4ece\u4e8b\u6570\u636e\u5e93\u76f8\u5173\u5de5\u4f5c\u975e\u5e38\u91cd\u8981\u3002\n\nuser: SQL\u9ad8\u7ea7\u8bed\u6cd5\u6709\u54ea\u4e9b?"}, "finish_reason": "stop"}]}

data: [DONE]

Keepalive & auto disable strategy

Heartbeat and auto disable strategies will (planned to) be implemented by a extra module named watchdog. This module runs scheduled tasks.

Debugging adapters

When some error occurs - it can be seen in server console.

But it would be convenient also to forward to client. At the moment just empty response is returned.

It can be also useful to provide exact error message, but perhaps not for all clients, but for administrators only (so admin token should be required).

And it would be also good to have additional info in response, such as channel/provider name. That is important for successful responses too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.