one-api新轮子支持vercel部署 将各种大模型转换为openai接口

论坛里面挺多的了。造个轮子玩。玩得开心~ 支持谷歌云的VertexAI Gemini
Claude

duolabmeng6/pro-api: 统一管理大模型API的项目,可以通过调用多个后端服务,统一转换为 OpenAI 格式 (github.com)



配置文件

api.yaml

providers:
  - provider: openai
    name: deepseek
    base_url: https://api.deepseek.com/v1
    api_key: sk-cba57e89745545a7b3192a54e2b04e77
    model:
      - deepseek-chat
      - deepseek-coder

tokens:
  - api_key: sk-123
    model:
      - all

server:
    default_model: deepseek-chat

启动中转容器

docker run -d \
  --name pro-api \
  -p 18000:8000 \
  -v $(pwd)/api.yaml:/app/api.yaml \
  -v $(pwd)/data:/app/data:rw \
  duolabmeng/pro-api:latest

测试

curl -X POST http://127.0.0.1:18000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API}" \
-d '{"model": "gpt-4o","messages": [{"role": "user", "content": "Hello"}],"stream": true}'

玩得开心~

308 个赞

#人工智能添加

Support

19 个赞

内存占用情况如何

4 个赞

:tieba_001: 大佬厉害:+1:

10 个赞

支持 functioncall 和 embedding 吗

5 个赞

感谢大佬分享!

6 个赞

感谢大佬分享!

3 个赞

支持工具调用的 不支持embedding 主要是我也不知道咋测试 我自己用不着
工具调用的测试代码在这里


agent_factory = (
    Agently.AgentFactory()
    .set_settings("current_model", "OpenAI")
    .set_settings("model.OpenAI.url",base_url)
    .set_settings("model.OpenAI.auth", {"api_key": api_key})
    .set_settings("model.OpenAI.options", {"model": model})
    .set_proxy("http://127.0.0.1:8888")
)

agent = agent_factory.create_agent()
agent_GLM_4 = (
    agent_factory.create_agent()
        .set_settings("model.OpenAI.options", { "model": "glm-4-flash" })
)
agent_gemini = (
    agent_factory.create_agent()
        .set_settings("model.OpenAI.options", { "model": "gemini-1.5-pro" })
)

from datetime import datetime
import pytz
def get_current_datetime(timezone):
    print("调用了函数")
    tz = pytz.timezone(timezone)
    return datetime.now().astimezone(tz)
tool_info = {
    "tool_name": "get_now",
    "desc": "get current data and time",
    "args": {
        "timezone": (
            "str",
            "[*Required] Timezone string used in pytz.timezone() in Python"
        )
    },
    "func": get_current_datetime
}
Agently.global_tool_manager.register(
    tool_name = tool_info["tool_name"],
    desc = tool_info["desc"],
    args = tool_info["args"],
    func = tool_info["func"],
)
Agently.global_tool_manager.register(**tool_info)
result = (
    agent_gemini
        .use_public_tools(["get_now"])
        .input("我在北京,现在几点了?")
        .start()
)
print(result)
3 个赞

image
肯定没golang占用小 但是也不大 主要是好写

7 个赞

感谢分享,我去试试能不能转Claude

3 个赞

感谢分享,回去就试试

8 个赞

可以可以,感谢分享:smiling_face_with_three_hearts::smiling_face_with_three_hearts::smiling_face_with_three_hearts:

6 个赞

主要是我没账号 估计是一样的…我写好了转换 支持谷歌的克劳拉

10 个赞

感谢,之前one-api有个bug无法解决,使用佬的项目完美解决

26 个赞

感谢分享,希望能适配cohere,另外问一下能支持单个模型多key轮询吗?

33 个赞

那必须的 py代码质量肯定好一点 对于golang 我觉得json处理起来就很吃力 我觉得py能更好配合大模型帮忙写代码 所以就不用go写了

3 个赞

可以配多个key啊 随便填 喔你说的是 模型轮训啊 我还没写 不难 等功能无bug了 我再加 后面可能还有 故障转移 自动停用 看我自己需求
我用py写的 扩张性还可以 可以自己适配 叫ai写就行

14 个赞
  - provider: cohere
    name: cohere
    base_url: https://api.cohere.com/v1
    api_key: 
    model:
      - command-r-plus-08-2024: gpt-4

一下子就适配好了速度很快

5 个赞

佬,这个能用prompt吗