
文心一言API(java)调用
最近要调用ai的api接口,由于赶时间,没时间钻研chat-gpt的api接口(以后没准有时间,估计要转发代理之类的),这次直接使用国产的AI(文心一言)
首先
点击以上链接,点击立即使用
进入管理页面,点击右上角头像进行身份验证,然后点击头像弹窗的安全验证,得到Access_Key和Secret_Key,
然后进入模型广场,点击对应模型的api文档就行了
可以看到对应的调用代码(还是满简洁)
对了顺便提一嘴所需的maven依赖
<!--文心一言-->
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>qianfan</artifactId>
<version>0.1.1</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20231013</version>
</dependency>
<!-- 需要添加依赖-->
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
接下来展示代码
package org.example;
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.chat.ChatResponse;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
public class AIDemo {
public static void main(String[] args) {
String Access_Key = "ALTAKK*****ceHtTU";
String Secret_Key = "10e5a1a********547f5";
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
Qianfan qianfan = new Qianfan(Access_Key, Secret_Key);
//单轮对话
// 指定模型
// ChatResponse resp = qianfan.chatCompletion()
// .model("ERNIE-4.0-8K")
// .addMessage("user", "你好,介绍一下你自己")
// .execute();
// System.out.println(resp.getResult())
//多轮对话
// ChatResponse resp = qianfan.chatCompletion()
// .model("ERNIE-4.0-8K")
// .addMessage("user", "你好")
// .addMessage("assistant", "你好!请问有什么我可以帮助你的吗?无论是关于生活、工作、学习还是其他方面,都可以随时告诉我。")
// .addMessage("user", "我在上海,周末可以去哪里玩?")
// .addMessage("assistant", "上海是一个充满活力和文化氛围的城市,有很多适合周末游玩的地方。以下是几个值得推荐的地方:\\n\\n1. 上海科技馆:上海科技馆是中国大陆最大的科技馆之一,有许多互动展览和科学实验室,可以让您了解科技的发展历史和最新成果。\\n2. 上海博物馆:上海博物馆是一座集艺术、历史和文化于一体的博物馆,有许多精美的艺术品和文物,可以让您深入了解中国和世界的文化历史。\\n3. 外滩:外滩是上海的标志性景点之一,有许多高楼大厦和繁华的商业街区,是欣赏黄浦江美景和城市风貌的好去处。\\n4. 上海迪士尼乐园:上海迪士尼乐园是世界上最大的迪士尼主题公园之一,有许多精彩的游乐项目和演出,可以让您尽情享受娱乐和欢乐。\\n5. 上海野生动物园:上海野生动物园是一个以自然保护为主题的野生动物园,有许多珍稀动物和植物,可以让您近距离接触大自然。\\n\\n这些地方都是上海周末游玩的好去处,可以根据自己的兴趣和需求选择合适的行程。")
// .addMessage("user", "简单介绍下上海的旅游景点")
// .execute();
// System.out.println(resp.getResult());
//流式
Gson gson = new Gson();
qianfan.chatCompletion()
.model("ERNIE-4.0-8K")
.addMessage("user", "简单介绍下故宫")
// 启用流式返回
.executeStream()
.forEachRemaining(chunk -> {
try {
System.out.print(new JSONObject(gson.toJson(chunk)).getString("result"));
} catch (JSONException e) {
throw new RuntimeException(e);
}
});
}
}
单次交流和多次交流就是有没有上下文的区别(所以数据库要存储聊天记录)
而流式返回是AI服务器那边有什么就返回什么,具体的结果如下
{"sentenceId":0,"isEnd":false,"isTruncated":false,"finishReason":"normal","result":"故宫,","needClearHistory":false,"usage":{"promptTokens":3,"completionTokens":0,"totalTokens":3},"id":"as-1m6sgazwai","object":"chat.completion","created":1730437452,"headers":{"Access-Control-Allow-Headers":"Content-Type","Access-Control-Allow-Origin":"*","Bfe-Trace-Id":"9523f90cd4f51dec43929f85ae809355","Cache-Control":"no-cache","Connection":"keep-alive","Content-Type":"text/event-stream; charset\u003dutf-8","Date":"Fri, 01 Nov 2024 05:04:12 GMT","P3p":"CP\u003d" OTI DSP COR IVA OUR IND COM "","Server":"Apache","Set-Cookie":"BAIDUID\u003d5A3D769AAE421735EB2CA914FF1DD186:FG\u003d1; expires\u003dThu, 31-Dec-37 23:55:55 GMT; max-age\u003d2145916555; path\u003d/; domain\u003d.baidubce.com; version\u003d1","Statement":"AI-generated","X-Accel-Buffering":"no","X-Baidu-Request-Id":"ea0b75a5109ccd62e64a00d86f02abab1000710","X-Openapi-Server-Timestamp":"1730437451","X-Ratelimit-Limit-Requests":"10000","X-Ratelimit-Limit-Tokens":"800000","X-Ratelimit-Remaining-Requests":"9999","X-Ratelimit-Remaining-Tokens":"799997","Transfer-Encoding":"chunked"}}
可以看到还是蛮复杂的我为了方便就只提取result了(我感觉好浪费token啊)
如果想看全可以将代码改为
qianfan.chatCompletion()
.model("ERNIE-4.0-8K")
.addMessage("user", "简单介绍下故宫")
// 启用流式返回
.executeStream()
.forEachRemaining(chunk -> System.out.print(gson.toJson(chunk)));
参数具体可以看这篇
使用Python调用百度千帆免费大模型接口 - 方倍工作室 - 博客园
好了,可以开工了。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小徐
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果