LLM大模型统一封装接口解决方案

LLM统一接口 OpenAI 接口接入适配,支持千帆大模型平台、讯飞星火大模型、腾讯混元以及MiniMax、Deep-Seek,等兼容OpenAI接口,仅单可执行文件,配置超级简单,一键部署,开箱即用。 阅读详情

即刻关注,获取更多

关注公众号 N学无止界 获取更多

目的:封装一个通用的 Java 框架的 chat completion 接口,来适配各种大模型的统一调用

限制条件:仅对聊天(文本)接口进行封装,其他接口待后续计划安排

OpenAi chat completion 接口分析

==>官方文档

  • Curl 默认请求

curl http://chat.xxxxxx.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

返回值

{
   
   
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-3.5-turbo-0125",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
   
   
    "index": 0,
    "message": {
   
   
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
   
   
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
  • Python 流式请求

from openai import OpenAI
# client = OpenAI()

client = OpenAI(
    base_url='http://chat.xxxxxx.com/'
)
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {
   
   "role": "system", "content": "You are a helpful assistant."},
    {
   
   "role": "user", "content": "Hello!"}
  ],
  stream=True
)

for chunk in completion:
  print(chunk.choices[0].delta)

返回值

{
   
   
	"id": "chatcmpl-123",
	"object": "chat.completion.chunk",
	"created": 1694268190,
	"model": "gpt-3.5-turbo-0125",
	"system_fingerprint": "fp_44709d6fcb",
	"choices": [
		{
   
   
			"index": 0,
			"delta": {
   
   
				"role": "assistant",
				"content": ""
			},
			"logprobs": null,
			"finish_reason": null
		}
	]
}

{
   
   
	"id": "chatcmpl-123",
	"object": "chat.completion.chunk",
	"created": 1694268190,
	"model": "gpt-3.5-turbo-0125",
	"system_fingerprint": "fp_44709d6fcb",
	"choices": [
		{
   
   
			"index": 0,
			"delta": {
   
   
				"content": "Hello"
			},
			"logprobs": null,
			"finish_reason": null
		}
	]
}

....

{
   
   
	"id": "chatcmpl-123",
	"object": "chat.completion.chunk",
	"created": 1694268190,
	"model": "gpt-3.5-turbo-0125",
	"system_fingerprint": "fp_44709d6fcb",
	"choices": [
		{
   
   
			"index": 0,
			"delta": {
   
   },
			"logprobs": null,
			"finish_reason": "stop"
		}
	]
}

请求参数分析

  • model 选填,默认为 gpt-3.5-turbo

  • messages 必填

[
    {
   
   "role": "system", "content": "You are a helpful assistant."},
    {
   
   "role": "user", "content": "Hello!"}
  ]

  • stream 选填,默认为 false

If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a data: [DONE] message

  • temperature 选填,默认为 1

What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

使用什么样的采样温度,在 0 到 2 之间。较高的值,比如 0.8,会使输出更随机,而较低的值,比如 0.2,会使其更加聚焦和确定性。

We generally recommend altering this or top_p but not both.

我们一般建议修改这个参数或者 top_p,但不要同时修改两者。

  • top_p 选填,默认为 1

An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.

一种与温度采样相对应的替代方法是核心采样,模型会考虑具有 top_p 概率质量的标记的结果。因此,0.1 表示仅考虑构成顶部 10% 概率质量的标记。

We generally recommend altering this or temperature but not both.

我们一般建议修改这个参数或者温度,但不要同时修改两者。

其他可能用到的请求参数

  • max_tokens 选填,无默认值

The maximum number of tokens that can be generated in the chat completion.

  • n integer or null 选填,默认值 1

How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep n as 1 to minimize costs.

输出参数对比(默认和流式结果)

  • 流式结果没有 usage 字段,要计算token数需要额外计算,官方并未提供相关方法

    计算token 的 官方介绍

    Another small drawback of streaming responses is that the response no longer includes the usage field to tell you how many tokens were consumed. After receiving and combining all of the responses, you can calculate this yourself using tiktoken.

    python库 tiktoken使用方法

  • 普通请求结果的 choices 字段中的 message 用 delta 字段代替

灵医Bot Chat 接口分析

接口路径 /api/01bot/sse-gateway/stream

灵医Bot Chat 提供 如果是服务端调用,参考 Server Sent Events server and client for Golang

Header参数

名称 示例 类型 必选 说明
Content-Type application/json string 是 Content-Type类型
X-IHU-Authorization-V2 参考《鉴权认证文档》 string 是 签名字符串

非流式请求示例(单轮)参数

{
   
   
    "model": "test-model",
    "stream": false,
    "messages": [
        {
   
   
            "version":"api-v2",       
            "created": 1683944235,              
            "role": "user",                    
            "content": [{
   
   
                "type":"text",
                "body":"患者3天前面部肿胀伴多发红疹,自觉瘙痒,是什么疾病?"
            }]                       
        }
    ]
}

与OpenAi区别
messages 字段多了 version created 字段

文档中message 参数中有 default 参数必填 (兜底开关,用于兜底策略:0:不兜底 1:一言兜底) 但是给出的示例中未体现

content 内容结构不同, 有 string 改成 实体类型(type, body)

非流式响应参数(单轮)

{
   
   
    "error_msg":"",
    "logid":"",
    
Python使用OpenAI的API OpenAI API可以应用于几乎所有涉及生成自然语言、代码或图像的任务。提供了一系列不同能力级别的模型,适用于不同任务的,并且能够微调自己的自定义模型。 阅读详情

相关推荐

Unity 讯飞 之 讯飞星火大模型的简单封装和使用(补充讯飞大模型识图功能)

Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。这里简单的介绍讯飞大模型的封装和使用,进行聊天。“讯飞星火认知大模型”是科大讯飞发布的产品,具有7大核心能力,即文本生成、语言理解、知识问答、逻辑推理、数学能力、代码能力、多模态能力。星火v1.5、v2.0地址: http://spark-api.xf-yun.com/v1/completions星火v3.0地址: http://spark-api.xf-yun.com/v3/completions。

仙魁XAN 3896

LangChain面试内容整理-知识点5:LLM 接口与模型封装

LangChain通过统一接口封装不同语言模型,简化开发流程。核心功能包括:1)提供LLM、ChatModel和Embedding三类标准接口,屏蔽底层模型差异;2)支持OpenAI、HuggingFace等多种模型的无缝切换;3)自动处理API调用、参数配置和异常处理等细节。开发者只需关注业务逻辑,通过简单初始化即可调用不同模型,如OpenAI需设置API密钥,本地模型通过HuggingFacePipeline加载。这种设计实现了模型无关性,使应用能灵活切换不同厂商模型而无需重构代码,显著降低LLM集成门

不务正业的猿 459

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

上一期分析了MATLAB的黄金算法原理,这一期进行Simulink模块分析。

WZT725的博客 2086

工业异常检测评价指标(I-AUROC、PRO等)

模型评价指标:TPR、FPR、Recall、ROC、AUC、AUROC、IoU、PRO、AUPRO等

qq_1532145264的博客 7437

浪涌电流测试仪的工作原理

浪涌电流脉冲形成的开始由同步电路 13 确定,该同步电路 13 发送命令以打开和第二开关 10 和 11,向发生器 14 发送控制命令以生成被测半导体器件 5 的控制信号和参考信号整形器 9 的触发脉冲。电流源的功率输出并联连接,以对流经被测半导体样品的电流求和。此外,使用数字控制扩展了测试仪的功能,能够产生各种形状的电流脉冲,例如梯形电流脉冲,以估计被测晶闸管的导通状态扩展时间。由于晶体管3的栅极是连接的,并且平衡电阻4包含在晶体管3的源中,因此通过每个晶体管3的电流脉冲大致相同,并重复参考信号的形状。

Jesse0257的博客 1256

机器人动力学与控制学习笔记(一)————机器人控制概述

一、概述 1、机器人控制的目的 对自由运动机器人来说,控制的目的是要控制机器人手端的位置和姿态(以后统一简称为位姿),即所谓位置控制问题。这时希望机器人手端所达到的位置称为期望位置或期望轨迹。期望轨迹可以在机器人任务空间中给出,也可以通过逆运动学关系转化为机器人关节空间中的期望轨迹。期望轨迹通常有两种形式:一种是一个固定位置(即固定点),另一种是一条随时间连续变化的轨迹。自由运动机器人位置控制的目的,是要使机器人手端从任意起始位置出发都能到达期望轨迹。当期望轨迹是固定点时的位置控制称为定...

冰与火的青春的博客 6882

Altium Designer(AD)仿真实验操作指南

1:运行仿真2:设置仿真3:放置电源模块4:放置器件模块5:探针。

XU157303764的博客 8900

【YOLOv11多模态涨点改进】独家创新首发 | TGRS 2025 | 引入CDFIM跨模态差异特征交互模块,通过差异特征提取和融合增强机制,减少了冗余信息,显著提升了小目标的检测精度,高效涨点改进

🔥本文给大家介绍使用 CDFIM跨模态差异特征交互模块改进 YOLOv11多模态目标检测,通过有效的差异特征提取和增强,显著提升了小目标的检测精度,特别是在复杂背景和低对比度环境下。该模块通过残差加法和通道与空间注意力机制,增强了可见光与红外模态之间的互补特征交互,减少了冗余信息,提高了检测稳定性。尽管提升了特征交互,CDFIM 仍保持轻量化设计,计算开销和参数量较低,适合实时检测应用。总的来说,CDFIM 模块在保留原始模态信息的同时优化了特征融合,有效提高了 YOLO 在多模态目标检测中的鲁棒性和精度

Ai缝合怪、助力小伙伴高效发论文 131

置顶必读(2) | 《YOLOv11实战:从入门到深度优化》目录导航篇(持续更新中)

🏆 本文收录于 《YOLOv11实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现全网各类 YOLOv11 / YOLO系列改进方案与实战案例,目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么改”,更讲“为什么这样改、如何真正落地到项目中”。

**My Coding Family** 11万+

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1993

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 20230223-商用显卡性能一览表
下一篇: LLM流式方案解决方案和客户端解决方案
Jack_software
博客等级 码龄17年 1324粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_software

感谢打赏,我努力提供优质内容~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值