当前位置: 首页 > news >正文

7. LangChain4j如何使用统一api调用?

前言

        当我们对接LangChain4j的时候,面对复杂的各种各样的大模型的api的对接,让很多开发者感到力不从心。在每个大模型的api都不一样的时候?该如何快捷的切换模型的使用呢?

        这时,One-API应运而生,它以其简洁,高效的特性,吸引了大量开发者的关注。那么,究竟什么是One-API?它有哪些应用场景?又该如何尝试呢?本文将为你一一解答。

One-API简介

        One-API,顾名思义,即“一个API”,它旨在通过统一的编程接口,让开发者能够更轻松地应对不同硬件平台上的编程挑战。One-API将多种编程语言、库和框架整合在一起,形成了一个强大的编程生态系统。在这个生态系统中,开发者只需掌握一套统一的API,就能在各种硬件平台上进行高效的开发。

官网:One-API官网

 

基于 Docker 进行部署

# 使用 SQLite 的部署命令:
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /usr/local/data/one-api:/data justsong/one-api

其中,-p 3000:3000 中的第一个 3000 是宿主机的端口,可以根据需要进行修改。

数据和日志将会保存在宿主机的 //usr/local/data/one-api 目录,请确保该目录存在且具有写入权限,或者更改为合适的目录。

如果启动失败,请添加 --privileged=true,具体参考 #482 。

如果上面的镜像无法拉取,可以尝试使用 GitHub 的 Docker 镜像,将上面的 justsong/one-api 替换为 ghcr.io/songquanpeng/one-api 即可。如下

docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /usr/local/data/one-api:/data ghcr.io/songquanpeng/one-api

     如果想学习docker国内拉不了镜像,该怎么办?可以看我这篇博客Docker无法拉取镜像!如何解决?-CSDN博客

启动完之后,访问:http://localhost:3000/   初始账号用户名为 root,密码为 123456

如何使用one-api?

登录完后,页面如下

 此时,我们需要配置渠道和令牌。

one-api支持的渠道如下:
  1. 支持多种大模型:
    •  OpenAI ChatGPT 系列模型(支持 Azure OpenAI API)
    •  Anthropic Claude 系列模型 (支持 AWS Claude)
    •  Google PaLM2/Gemini 系列模型
    •  Mistral 系列模型
    •  字节跳动豆包大模型
    •  百度文心一言系列模型
    •  阿里通义千问系列模型
    •  讯飞星火认知大模型
    •  智谱 ChatGLM 系列模型
    •  360 智脑
    •  腾讯混元大模型
    •  Moonshot AI
    •  百川大模型
    •  MINIMAX
    •  Groq
    •  Ollama
    •  零一万物
    •  阶跃星辰
    •  Coze
    •  Cohere
    •  DeepSeek
    •  Cloudflare Workers AI
    •  DeepL
    •  together.ai
    •  novita.ai
添加渠道

 添加令牌

 

使用方法

渠道页面中添加你的 API Key,之后在令牌页面中新增访问令牌。

之后就可以使用你的令牌访问 One API 了,使用方式与 OpenAI API 一致。

你需要在各种用到 OpenAI API 的地方设置 API Base 为你的 One API 的部署地址,例如:http://localhost:3000,API Key 则为你在 One API 中生成的令牌。

注意,具体的 API Base 的格式取决于你所使用的客户端。

例如对于 OpenAI 的官方库:

OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"

可以通过在令牌后面添加渠道 ID 的方式指定使用哪一个渠道处理本次请求,例如:Authorization: Bearer ONE_API_KEY-CHANNEL_ID。 注意,需要是管理员用户创建的令牌才能指定渠道 ID。不加的话将会使用负载均衡的方式使用多个渠道。

案例实战

对接-月之暗面Ai

        以下的baseUrl使用的是我们one-api的访问地址,加上/v1,而apikey是在one-api中配置的月之暗面的令牌。modelName是其中的一个模型名称。

  ChatLanguageModel model = OpenAiChatModel.builder().baseUrl("http://localhost:3000/v1").apiKey("one-api月之暗面令牌").modelName("moonshot-v1-8k").build();String answer = model.generate("你好,你是谁?");System.out.println(answer);
对接-智普Ai

        当我们想切换其他的大模型的时候,只需要把apikey和modelName改一下就可以了。很容易的实现大模型的切换。

  ChatLanguageModel model = OpenAiChatModel.builder().baseUrl("http://localhost:3000/v1").apiKey("one-api智普令牌").modelName("glm-4").build();String answer = model.generate("你好,你是谁?");System.out.println(answer);

相关文章:

7. LangChain4j如何使用统一api调用?

前言 当我们对接LangChain4j的时候&#xff0c;面对复杂的各种各样的大模型的api的对接&#xff0c;让很多开发者感到力不从心。在每个大模型的api都不一样的时候&#xff1f;该如何快捷的切换模型的使用呢&#xff1f; 这时&#xff0c;One-API应运而生&#xff0c;它以其简洁…...

RPM、YUM 安装 xtrabackup 8 (mysql 热备系列一)包含rpm安装 mysql 8 配置主从

RPM安装 percona-xtrabackup-80-8.0.35-30.1.el7.x86_64.rpm 官网&#xff1a; https://www.percona.com/ 下载地址&#xff1a; https://www.percona.com/downloads wget https://downloads.percona.com/downloads/percona-distribution-mysql-ps/percona-distribution-mysq…...

maven项目打成可运行的jar及pom中的依赖一同打包

maven项目打jar及pom中的依赖一同打包 最近开发中有个需求&#xff0c;不部署新的服务&#xff0c;只jar包执行 那maven项目中&#xff0c;代码如何以jar的方式运行、如何把代码打成jar、pom中的依赖如何与代码一同打到jar包中&#xff1f; 1、代码如何以jar的方式运行&…...

Gettler‘s Screep World 笔记 Ⅰ

夏促时候刚刚入坑&#xff0c;写个笔记叭~ 环境配置 参考 HoPGoldy 大佬的简书&#xff0c;先配置下开发环境 萌新去看大佬的详细教程&#xff0c;我这里比较简单&#xff0c;有前端基础的可以直接抄 VSCode 跳过 node 我配的是v18.18.2 换源 npm config set registry h…...

联合体(union)的定义以及如何与结构体(struct)不同

联合体&#xff08;Union&#xff09;是一种特殊的数据类型&#xff0c;它允许在相同的内存位置存储不同的数据类型。但是&#xff0c;在任何给定的时间点&#xff0c;联合体只能存储其中的一个值&#xff1b;这意味着联合体的大小是其最大成员的大小&#xff0c;因为它必须足够…...

【Spark官方文档部分翻译】RDD编程指南(RDD Programming Guide)

写在前面 内容如何选择 本翻译只翻译本人认为精华的部分&#xff0c;本人认为的Spark的一些核心理念&#xff0c;编程思想。一些特别基础的操作包括但不限于搭建环境就不在此赘述了。 配套版本 本系列基于Spark 3.3.1&#xff0c;Scala 2.12.10&#xff0c;进行翻译总结 原…...

前端八股文 $set

为什么会有$set vue2中对数组中新增的属性是监听不到的 如图 vue 插件中有但是 视图中没有刷新 解决方法 解决就是 $set() 就是在数组中新增属性的时候可以重新渲染视图 具体的写法 写法 就是 第一个 是在那个对象上新增 第二个参数 是新增的属性 第三个参数是 新增的属性…...

Connecting weaviate with langflow across docker containers

题意&#xff1a;在Docker容器之间连接Weaviate与Langflow 问题背景&#xff1a; I am trying to build a local RAG application using Langflow. For my vectore store, I want to use a local Weaviate instance, hosted in a separate docker container on the same netwo…...

【linux vim使用说明】

基本概念 提示&#xff1a;本文是网络资源整理 模式: vim 有多种模式&#xff0c;每种模式都有不同的功能。 普通模式 (Normal Mode): 默认模式&#xff0c;用于导航和执行命令。插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。可视模式 (Visual Mode): 用于选择…...

cocos2d-x安装和项目

首先多方查找资料发现教程很简洁&#xff0c;发现对自己的操作方面没多大帮助&#xff0c;后来干脆去官网&#xff0c;好像也很简洁。基于这样一个原因&#xff0c;加上我首次碰cocos2d-x&#xff0c;决定记录一下整个流程&#xff0c;解决实际操作上的疑惑。 涉及的方面&…...

因果推断 | 双重机器学习(DML)算法原理和实例应用

文章目录 1 引言2 DML算法原理2.1 问题阐述2.2 DML算法 3 DML代码实现3.1 策略变量为0/1变量3.2 策略变量为连续变量 4 总结5 相关阅读 1 引言 小伙伴们&#xff0c;好久不见呀。 距离上次更新已经过去了一个半月&#xff0c;上次发文章时还信誓旦旦地表达自己后续目标是3周更…...

Flutter 开源库学习

网上看了好多歌词实现逻辑相关资料&#xff0c;封装比较的好的 就 flutter_lyric&#xff0c;核心类是LyricsReader&#xff0c;而且如果实现逐字逐句歌词编辑功能还需要自己实现很多细节 &#xff0c;网友原话是 &#xff1a;歌词的功能真的是不少&#xff0c;写起来也是挺难的…...

自主巡航,目标射击

中国机器人及人工智能大赛 参赛经验&#xff1a; 自主巡航赛道 【机器人和人工智能——自主巡航赛项】动手实践篇-CSDN博客 主要逻辑代码 #!/usr/bin/env python #coding: utf-8import rospy from geometry_msgs.msg import Point import threading import actionlib impor…...

MySQL中EXPLAIN关键字详解

昨天领导突然问到&#xff0c;MySQL中explain获取到的type字段中index和ref的区别是什么。 这两种状态都是在使用索引后产生的&#xff0c;但具体区别却了解不多&#xff0c;只知道ref相比于index效率更高。 因此&#xff0c;本文较为详细地记录了MySQL性能中返回字段的含义、状…...

如何理解ref toRef和toRefs

是什么 ref 生成值类型的响应式数据可用于模板和reactive通过.value修改值 ref也可以像vue2中的ref那样使用 toRef 针对一个响应式对象&#xff08;reactive&#xff09;的prop创建一个ref两者保持引用关系 toRefs 将响应式对象&#xff08;reactive封装&#xff09;转换…...

【linux】kernel-trace

文章目录 linux kernel trace配置trace内核配置trace接口使用通用配置Events配置Function配置Function graph配置Stack trace设置 跟踪器tracer功能描述 使用示例1.irqsoff2.preemptoff3.preemptirqsoff linux kernel trace 配置 源码路径&#xff1a; kernel/trace trace内…...

【Golang 面试基础题】每日 5 题(一)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

ETCD介绍以及Go语言中使用ETCD详解

ETCD介绍以及Go语言中使用ETCD详解 什么是etcd ETCD是一个分布式、可靠的key-value存储的分布式系统,用于存储分布式系统中的关键数据;当然,它不仅仅用于存储,还提供配置共享及服务发现;基于Go语言实现 。 etcd的特点 完全复制:集群中的每个节点都可以使用完整的存档高…...

03-用户画像+Elasticsearch

优点 es支持海量数据的写入和更新es可以和hadoop&#xff0c;hive及spark进行集成es支持hivesql的操作&#xff0c;可以通过hivesql将数据导入eses的在进行数据检索查询是速度比较快es是分布式存储 应用 全文检索 全文检索流程: 1-对文档数据(文本数据)进行分词 2-将分词…...

初学Mybatis之搭建项目环境

在连接 mysql 数据库时&#xff0c;遇到了个 bug&#xff0c;之前都能连上&#xff0c;但报错说换了个 OS 操作系统什么的 然后搜索怎么连接&#xff0c;找到了解决方法 MySQL MYSQL – 无法连接到本地MYSQL服务器 (10061)|极客教程 (geek-docs.com) 命令行输入 services.msc…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...