【AI大模型】对接LLM API

在这里插入图片描述

本章节主要介绍四种大语言模型(ChatGPTAPI、文心一言、讯飞星火、智谱 GLM)的 API 申请指引和 Python 版本的原生 API 调用方法。

文心一言:当前无赠送新用户 tokens 的活动,推荐已有文心 tokens 额度用户和付费用户使用;
智谱 GLM:新用户赠送 tokens,推荐免费用户使用。
ChatGPT:推荐可科学上网的读者使用;

一、文心一言

在这里插入图片描述

哎哟喂,说起这文心一言啊,它可是百度在2023年3月27日那天闪亮登场的中文大模型新秀,简直就是咱们国内大语言模型界的一股清流,代表中的代表嘛!不过呢,你也知道,中文语料那玩意儿,质量参差不齐,再加上咱们国内计算资源和技术上的那么点小瓶颈,文心一言跟那国际大咖ChatGPT比起来,整体性能上还得再努把力,虽说差距有,但在咱们自家地盘——中文语境下,它可是表现得相当不俗,挺让人骄傲的。

文心一言心里头揣着的梦可大了,它不光想搞点文学创作啊、多模态生成啊这些高大上的事儿,还立志要在中文界把ChatGPT给比下去,那雄心壮志,杠杠的!但话说回来,要想真刀真枪地干赢ChatGPT,百度这路还长着呢,得一步一步来。不过呢,话说回来,在咱们这生成式AI监管严得跟啥似的国内环境里,文心一言作为首批获准面向大众开放的AI应用,那可是有它独特的商业优势的,毕竟ChatGPT那哥们儿,现在还只能藏着掖着呢。

百度也是贴心,知道大伙儿想用这好东西,直接给文心一言整了个API接口,还顺带着推出了文心千帆这么个企业级大语言模型服务平台,一站式解决你的大模型开发难题,连带着百度那一套完整的开发流程都打包送上了。你说对于那些自个儿搞不定大模型落地的中小企业啊、传统企业啊,文心千帆简直就是救星般的存在嘛!当然啦,咱们这教程嘛,就专注于怎么通过文心千帆平台去调用文心一言的API,至于其他那些高大上的企业级服务,咱们今儿个就先不扯那么远了。

2.1 千帆 SDK

2.1.1 API 申请指引

  1. 获取密钥
  • 百度智能云千帆大模型平台提供了多种语言的千帆 SDK,开发者可使用 SDK,快捷地开发功能,提升开发效率。
  • 在使用千帆 SDK 之前,需要先获取文心一言调用密钥,在代码中需要配置自己的密钥才能实现对模型的调用,下面我们以 Python SDK为例,介绍通过千帆 SDK 调用文心模型的流程。
  • 首先需要有一个经过实名认证的百度账号,每一个账户可以创建若干个应用,每个应用会对应一个 API_Key 和 Secret_Key。
  1. 进入文心千帆服务平台,点击上述应用接入按钮,创建一个调用文心大模型的应用。
    接着点击去创建按钮,进入应用创建界面:
    简单输入基本信息,选择默认配置,创建应用即可。
    创建完成后,我们可以在控制台看到创建的应用的 API Key、Secret Key。

  2. 需要注意的是,千帆目前只有 Prompt模板、Yi-34B-Chat 和 Fuyu-8B公有云在线调用体验服务这三个服务是免费调用的,如果你想体验其他的模型服务,需要在计费管理处开通相应模型的付费服务才能体验。我们将这里获取到的 API Key、Secret Key 填写至 .env 文件的 QIANFAN_AK 和 QIANFAN_SK 参数。

  3. 如果你使用的是安全认证的参数校验,需要在百度智能云控制台-用户账户-安全认证页,查看 Access Key、Secret Key,并将获取到的参数相应的填写到 .env 文件的 QIANFAN_ACCESS_KEY、QIANFAN_SECRET_KEY。

然后执行以下代码,将密钥加载到环境变量中。

from dotenv import load_dotenv, find_dotenv
# 读取本地/项目的环境变量。
# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())

2.1.2 调用文心千帆 API

百度文心同样支持在传入参数的 messages 字段中配置 user、assistant 两个成员角色的 prompt,但与 OpenAI 的 prompt 格式不同的是,模型人设是通过另一个参数 system 字段传入的,而不是在 messages 字段中。

下面我们使用 SDK,封装一个 get_completion 函数供后续使用。

再次提醒读者:如果账户中没有免费的或者购买的额度,在执行下述代码调用文心 ERNIE-Bot 时,会有如下报错:error code: 17, err msg: Open api daily request limit reached。

点击模型服务可以查看千帆支持的全部模型列表。

import qianfan

def gen_wenxin_messages(prompt):
    '''
    构造文心模型请求参数 messages

    请求参数:
        prompt: 对应的用户提示词
    '''
    messages = [{"role": "user", "content": prompt}]
    return messages


def get_completion(prompt, model="ERNIE-Bot", temperature=0.01):
    '''
    获取文心模型调用结果

    请求参数:
        prompt: 对应的提示词
        model: 调用的模型,默认为 ERNIE-Bot,也可以按需选择 ERNIE-
### Java与大型AI模型的集成 对于希望将Java应用程序与大型AI模型集成的需求而言,通常有几种方法可以实现这一目标。一种常见的做法是通过REST API来调用远程部署的语言模型服务[^1]。 #### 使用HTTP请求发送数据到API端点 当采用这种方式时,在Java中可以通过`HttpURLConnection`类或者更高级别的库如Apache HttpClient发起POST请求向已发布的API传递输入文本并接收响应结果: ```java import java.io.OutputStream; import org.apache.http.HttpResponse; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class ApiClient { public static void main(String[] args) throws Exception { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost postRequest = new HttpPost("https://api.example.com/v1/models/llm:predict"); String jsonInputString = "{\"input\": \"What is the weather like today?\"}"; StringEntity entity = new StringEntity(jsonInputString); postRequest.setEntity(entity); try (CloseableHttpResponse response = httpClient.execute(postRequest)) { System.out.println(response.getStatusLine().getStatusCode()); } } } } ``` 另一种方式则是直接在本地环境中加载预训练好的模型文件并通过JNI(Java Native Interface)桥接至C/C++编写的高性能推理引擎来进行预测操作[^2]。然而这种方法相对复杂得多,并且可能涉及到跨平台兼容性和性能优化等问题。 为了简化开发流程以及提高效率,还可以考虑利用一些专门为机器学习设计的框架或工具包,比如DL4J(DeepLearning4j),它提供了丰富的接口用于构建神经网络结构并且支持多种主流格式的权重参数导入导出功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值