一文搞懂在 HTTP 如何 one-api 调用,实操指南来袭!
本文聚焦于在 HTTP 如何 one-api 调用,开篇点明 什么是One API 。接着详细阐述实操步骤,涵盖前置准备,如适配多系统的软件环境搭建、工具安装;核心流程,包含获取与运行 one-api、创建渠道、申请令牌;项目配置,涉及初始化与修改关键配置文件;还给出 Python 代码示例演示调用过程,收尾强调启动测试要点,为技术人员提供全面且易懂的 one-api 调用科普指南。
一、什么是 One API
One API 是 OpenAI 接口管理和分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,支持 智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、腾讯混元等国内大模型
二、前置准备:搭建基础环境
(一)环境软件配置
在开启One API 的调用之旅前,精心搭建适配的环境是基石。就软件层面而言,one-api 展现出了良好的兼容性,支持 Python 3.8 至 3.11 版本,无论是 Windows 的便捷操作、macOS 的流畅体验,还是 Linux 的强大功能拓展,它都能完美适配,满足不同开发者的习惯偏好。从硬件适配角度出发,自 0.3.0 版本更新后,one-api 的灵活性大幅提升,无论是依托 CPU 单核的简约部署,利用 GPU 并行加速的高效运算,还是借助 NPU 面向特定需求的精准优化,乃至 MPS 在特定苹果硬件上的专属加速,都能找到用武之地,让开发者可依据手头硬件资源随心选用。
(二)关键工具安装
以常用的 Langchain – Chatchat 为例,自 0.3.0 版本起,其安装方式便捷高效,以 Python 库形式存在。在命令行窗口输入 “pip install langchain-chatchat -U”,即可开启安装流程。这里要着重提醒,为保障库版本最新,避免后续潜在冲突,推荐优先选用官方 Pypi 源;若网络访问存在限制,清华源(https://pypi.tuna.tsinghua.edu.cn/simple)也是稳定可靠的备选,它能在保障功能完整的同时,加速安装进程,为后续开发铺就坦途。
三、核心步骤:one-api 接入全流程
(一)获取 one-api 可执行文件
获取 one-api 可执行文件是开启调用之旅的首道关卡,目前有两种主流途径。若想便捷快速上手,可直接从链接 Release v0.6.8・songquanpeng/one-api(https://github.com/songquanpeng/one-api/releases/tag/v0.6.8)下载适配系统的可执行文件.exe,其优势在于操作简易,免去复杂的编译流程,下载完成后即可进入后续部署环节。
对于进阶开发者,从源码编译能深度掌控项目细节,定制化程度更高。首先,在命令行执行 “git clone https://github.com/songquanpeng/one-api.git”,将 one-api 源码完整克隆至本地。接着,构建前端代码,进入 “one-api/web/default” 目录,先后运行 “npm install” 安装依赖项,再执行 “npm run build” 完成前端构建,确保前端界面交互流畅。而后退回上级目录,构建后端,运行 “go mod download” 拉取 Go 模块依赖,最后执行 “go build -ldflags “-s -w” -o one-api” 生成可执行文件,此刻,专属定制的 one-api 可执行文件便准备就绪。
(二)运行 one-api 服务
当获取到可执行文件后,运行服务环节至关重要。在终端执行 “chmod u + x one-api”,此命令为One API 文件赋予可执行权限,保障后续运行无阻碍。接着运行 “./one-api –port 3000 –log-dir./logs”,其中 “–port 3000” 指定服务运行端口为 3000,方便统一管理与访问;“–log-dir./logs” 设定日志存储目录为当前目录下的 logs 文件夹,便于后续运维排查问题。
服务成功运行后,打开浏览器,访问http://localhost:3000/,即可进入 one-api 的控制台登录界面,初始账号用户名是 root,密码为 123456,输入后便能开启 one-api 的功能探索之旅。
(三)创建渠道
成功登录 one-api 控制台后,创建渠道成为连接各类模型资源的关键纽带。在控制台界面,点击清晰醒目的 “渠道” 选项卡,跳转至渠道管理页面后,点击 “新建渠道” 按钮,开启渠道创建流程。
以接入讯飞星火模型为例,在弹出的创建窗口中,“渠道名称” 按需填写,如 “iFLYTEK-Xinghuo”;“渠道类型” 从下拉菜单精准选择 “讯飞星火”;“模型” 依据需求勾选相应模型版本,如 “讯飞星火 2.0”;“密钥” 填入在讯飞星火平台申请的专属 API Key,确保信息准确无误后,点击 “保存” 按钮。此时,界面会弹出 “渠道创建成功” 的提示,下方渠道列表也将实时更新展示新建渠道详情,后续便可依托此渠道高效调用模型服务。
(四)申请令牌
申请令牌如同获取开启模型调用之门的专属钥匙,不可或缺。在 one-api 控制台首页,找到并点击 “令牌” 选项,进入令牌管理区域。点击 “添加新的令牌” 按钮,在弹出窗口中,“令牌名称” 可按项目或用途自定义,如 “Test-Project-Token”;“过期时间” 依据使用周期灵活设置,若短期测试,可选几天后过期;若长期稳定使用,可勾选 “永不过期”;“允许的 IP 范围” 按需限定访问源 IP,增强安全性,若仅本地开发测试,可填入 “127.0.0.1”,设置完成后点击 “生成” 按钮,专属令牌便生成展示,务必妥善保存,后续所有模型调用都将依赖此令牌完成身份验证。
四、项目配置:让 one-api 适配你的需求
(一)初始化项目配置与数据目录
初始化项目配置与数据目录是为项目构建稳固根基的关键一步。自 0.3.1 版本起,Langchain – Chatchat 创新性地采用本地 yaml 文件进行精细配置,赋予用户直观查看与便捷修改的能力,且服务器能动态更新,免除繁琐重启流程。
首先,设定 Chatchat 存储配置文件和数据文件的根目录,此操作虽非强制,但合理设置可使项目结构更为清晰。在 Linux 或 macOS 系统下,于终端执行 “export CHATCHAT_ROOT=/path/to/chatchat_data”,精准指定数据存储路径;在 Windows 系统中,则需在命令提示符输入 “set CHATCHAT_ROOT=/path/to/chatchat_data”。若未进行此项设置,系统将默认以当前目录作为根目录,虽同样可行,但随着项目复杂度提升,文件管理难度会相应增加。
完成路径设定后,执行 “chatchat init” 命令,这一指令宛如智能管家,自动完成多项关键任务。它会有条不紊地创建诸如数据存储、日志记录、模型缓存等所有必需的数据目录,确保各类数据各归其位;同时,贴心地将 samples 知识库内容完整复制至对应目录,为后续知识拓展与模型训练提供基础素材;还会生成默认的 yaml 配置文件,涵盖模型、知识库、基础设置等多方面初始参数,为项目启动做好全面铺垫。以模型配置文件 model_settings.yaml 为例,其初始内容便预设了部分通用模型参数,为后续精准调优节省大量时间。
(二)修改配置文件
修改配置文件环节精细且关键,直接关乎项目运行效果与资源适配精准度。
聚焦 model_settings.yaml,在此文件中,首要抉择是One API 的推理框架,这需依据项目实际需求、硬件资源特性以及模型兼容性综合判断。例如,若追求极致的推理速度,且硬件支持 GPU 加速,可优先考虑适配英伟达 GPU 的推理框架;若处于资源受限环境,侧重 CPU 单核的稳定运行,选择与之适配的轻量级框架更为明智。
关键参数调整不容忽视,如 “DEFAULT_LLM_MODEL”,它直接指定默认选用的大语言模型,像项目侧重于中文知识问答,将其设为如 “qwen1.5 – chat” 等针对中文优化的模型,能显著提升问答精准度与流畅度;“DEFAULT_EMBEDDING_MODEL” 关乎文本向量化,“bge – large – zh – v1.5” 在中文语义理解与特征提取方面表现卓越,可依文本语言特性灵活变更。同时,务必将 “LLM_MODEL_CONFIG” 中 “llm_model”“action_model” 的键精准改成所选的 LLM 模型,确保模型调用链路无缝衔接;在 “MODEL_PLATFORMS” 区域,依据所选模型平台,如实更新如 API 地址、密钥、并发数等信息,以阿里云百炼平台为例,需将模式设为 “oneapi”,并填入对应渠道申请的 api_key,保障与平台通信顺畅。
basic_settings.yaml 主要掌控知识库路径等基础设置。默认知识库位于 “CHATCHAT_ROOT/data/knowledge_base”,若期望迁移至特定存储位置,如外接大容量硬盘或共享文件夹,只需修改 “KB_ROOT_PATH” 为目标路径即可;同理,对于数据库存储,若采用 sqlite,“DB_ROOT_PATH” 可按需调整,若选用其他数据库,修改 “SQLALCHEMY_DATABASE_URI” 为对应连接字符串,确保数据存储与读取稳定高效。
kb_settings.yaml 则专注于知识库配置细节。默认启用 FAISS 知识库,若项目涉及海量知识检索,且对检索速度、精度有特殊要求,需连接如 Milvus 等其他类型的高性能知识库时,通过修改 “DEFAULT_VS_TYPE” 指定类型,并在 “kbs_config” 中精细配置连接参数,实现知识库的灵活切换与优化,为后续知识驱动的应用筑牢根基。
五、实战演练:用代码发起调用
在完成上述一系列精细筹备后,终于迎来激动人心的实战环节 —— 用代码发起调用。以 Python 为例,它凭借简洁明了的语法与丰富的库支持,成为众多开发者调用One API 的首选利器。
首先,导入必要库,这是开启调用之旅的第一步:
import requests
import json
这里,requests库宛如一位得力信使,负责高效构建与发送 HTTP 请求,让数据在客户端与服务器之间畅行无阻;json库则如同一位精准翻译官,能将复杂的 JSON 格式数据转换成 Python 易于理解和处理的结构,确保信息传递不失真。
接着,构建请求:
url = "http://localhost:3000/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_TOKEN"
}
data = {
"model": "your_model_name",
"messages": [{"role": "user", "content": "你好,今天天气如何?"}]
}
在这段代码中,url精准指向 one-api 服务的关键入口,是数据传输的目的地;headers作为请求头信息,承载着重要的 “身份标识” 与 “交流规范”,其中Content-Type告知服务器发送数据的格式为 JSON,Authorization则填入之前精心申请、妥善保存的令牌,这是开启模型服务大门的关键钥匙,务必确保准确无误,否则将被拒之门外;data部分是请求的核心内容,model指定调用的具体模型,如前文创建渠道时选用的模型,messages模拟用户与模型的对话场景,此处发起一个关于天气的日常询问,开启与模型的交互序幕。
然后,发送 HTTP 请求:
response = requests.post(url, headers=headers, json=data)
这行代码简洁有力,requests.post()方法宛如离弦之箭,带着精心构建的请求信息冲向目标服务器,同时接收服务器返回的响应,并存储在response变量中,等待后续剖析解读。
最后,解析响应:
if response.status_code == 200:
result = json.loads(response.text)
print(result["choices"][0]["message"]["content"])
else:
print(f"请求失败,状态码:{response.status_code}")
在此,首先严谨检查响应状态码,如同快递签收时确认包裹完好无损,200状态码意味着请求顺利送达并得到模型妥善处理,此时便可放心地用json.loads()将响应文本转换为 Python 字典,精准提取模型生成的回答并打印展示;若状态码非200,则表明途中出现状况,按错误处理流程打印状态码,以便排查问题,优化调整后续请求。
通过这一系列环环相扣的代码步骤,开发者便能在 Python 环境中,依托 http 协议与 one-api 深度交互,充分挖掘各类大模型潜能,为项目注入智能活力,实现功能的飞跃创新。无论是打造智能客服即时答疑解惑,还是辅助内容创作激发灵感火花,One API 结合代码的强大力量都将助力开发者逐梦前行。
六、收尾工作:启动与测试
在完成上述所有精细配置后,终于来到启动项目的关键时刻。在终端执行 “chatchat start -a”,此命令宛如引擎点火,瞬间激活整个项目,让前期所有筹备工作汇聚成流畅运行的智能应用。
项目成功启动后,若采用默认配置,可在浏览器访问http://127.0.0.1:8501/,映入眼帘的将是精心设计的交互界面,等待着用户输入指令,开启智能交互之旅。此时,不妨进行一次简单测试,在输入框输入 “请介绍一下人工智能的发展历程”,点击发送,片刻后,模型依据海量知识储备生成的详细回答便会呈现眼前,仔细核对回答内容,查看其是否逻辑清晰、信息准确,是否精准满足需求。若返回结果不尽人意,需冷静排查问题,首先检查网络连接是否稳定,确保数据传输无阻碍;再确认配置文件中模型参数是否适配,如模型版本是否正确、API 密钥有无错误;还可查看日志文件,其中记录的详细运行信息往往能精准定位问题根源,助力快速优化调整,让项目以最佳状态运行,充分释放One API 与大模型融合的强大能量,为后续开发创新筑牢根基。