王海鱼 发表于 2024-8-15 03:14:37

怎样申请文心一言&文心千帆大模型API调用资格、获取access_token,并使用Sp

前段时间,百度文心一言&文心千帆大模型开放了API调用的测试,接下来,教各人申请测试资格并接入文心千帆大模型的API。

一、文心一言&文心千帆的测试资格申请

1. 确保拥有一个百度智能云的账号

https://i-blog.csdnimg.cn/blog_migrate/e020dd5f1879d93d7bf8317b9e9285b5.png右上角点击注册,内容如实填写并完成实名认证。
https://i-blog.csdnimg.cn/blog_migrate/13685f546fa3136804f6c8463459cf12.png
 注册与认证详细内容不再赘述。
2. 文心千帆大模型资格申请

进入文心一言&文心千帆大模型介绍页,点击申请体验
https://i-blog.csdnimg.cn/blog_migrate/2f4da7fa4f7c10f4ebd04e73b1fdf937.png
会进入填写问卷页,没有什么本事,如实填写问卷信息即可,记得每一项要尽量详细,然后点击提交,接下来等候即可。
已经申请通过的会表现我这个页面。
https://i-blog.csdnimg.cn/blog_migrate/c84618bf1420214edff75eaed27f344a.png
 不出不测的话,接下来一天两天内你会收到如下短信
https://i-blog.csdnimg.cn/blog_migrate/79651c15219f667388eda8f7bc2b1a82.png
收到信息代表你申请通过,并且会赠送一张20的券,可根据文档自行使用。
3.(可选,非必要)文心千帆控制台

https://i-blog.csdnimg.cn/blog_migrate/bbb878a7a91f9301c31d3a0aaae7d10e.png
 https://i-blog.csdnimg.cn/blog_migrate/8de11c7e17652c379edec9d4896351ae.png
在这里你可以进行模型的体验与参数调治,详细功能请各位自行摸索。
二、获取文心千帆的access_token

众所都周知,百度的文心千帆大模型是通过access_key进行鉴权的,所以我们要调用API必须要申请一个access_key。
1.创建应用,获取API Key与Secret Key

 进入文心千帆大模型控制台,点击创建应用。
https://i-blog.csdnimg.cn/blog_migrate/a17fab942fcd5e20c8a3132f4164a61a.png
填写你要创建的应用信息,最下面还有个应用介绍,如实填写就好。
https://i-blog.csdnimg.cn/blog_migrate/317a1a4fe3cec7fb22921ce05886b77b.png
 创建乐成后,左侧选择应用列表,内里可以看到刚刚创建的应用,内里包罗了AppID、API Key、Secret Key(需点击表现),这些请务必不要泄露。
https://i-blog.csdnimg.cn/blog_migrate/50edc1ff0b942ce395a27b9c159d7d39.png
 我们需要API Key、Secret Key
2. 获取access_token

方法一:欣赏器发送请求

复制这两个Key,并替换下面链接的 与  
   https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=&client_secret=
比方:
   https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=ad456sa4d5fhr5kfh&client_secret=df45d14g5xsdtsc
欣赏器访问这个链接,你会得到一个json报文
https://i-blog.csdnimg.cn/blog_migrate/a41e78d7dd218a23dbf56662cde62a9d.png我们需要关心的是这两个键值对, expires_in 与 access_token 
expires_in:Access Token的有效期(秒为单位,默认有效期30天)
access_token:要获取的Access Token;

方法二:百度在线调试工具

在线调试工具
https://i-blog.csdnimg.cn/blog_migrate/6d0db898df323bd36cac7d681fa0da9f.png
左侧输入 API Key 与 Secret Key ,点击调试即可,参数与方法一一致。

方法三:编写发送请求

在线调试工具
这内里有每种语言的例程,可以直接复制修改。

三、接入文心一言API

官方文档
官方文档提供了四个模型,其中ErnieBot就是我们认识的文心一言,我们以这个为例,其他的与之类似或相同。
作为Java程序员,我就分别以一个 Java 程序和 SpringBoot 应用为例介绍怎么接入。

方法一:原生接入(不推荐)

按照官方文档,使用Hutool的HttpUtils工具类大概是其他的Http客户端接入,这样可以获得最大的自由度,但是即为麻烦,并且流式返回处理较为复杂,需使用Flux响应式来做,比较麻烦,我用一个原生Java程序演示一下:
public static void main(String[] args) {
      String url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions";
      String accessToken = "你的access_token";

      HashMap<String, String> msg = new HashMap<>();
      msg.put("role", "user");
      msg.put("content", "请介绍一下你自己");

      ArrayList<HashMap> messages = new ArrayList<>();
      messages.add(msg);

      HashMap<String, Object> requestBody = new HashMap<>();
      requestBody.put("messages", messages);

      String response = HttpUtil.post(url + "?access_token=" + accessToken, JSONUtil.toJsonStr(requestBody));

      System.out.println(response);
    } 输出内容:
{
    "id": "as-mibg24yygj",
    "object": "chat.completion",
    "created": 1690270732,
    "result": "您好,我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。",
    "is_truncated": false,
    "need_clear_history": false,
    "usage": {
      "prompt_tokens": 8,
      "completion_tokens": 49,
      "total_tokens": 57
    }
}
 方法二:使用现成的spring-boot-starter


项目开源地点:https://github.com/gemingjia/gear-wenxinworkshop-starter

1. 创建一个 SpringBoot 应用程序(建议选择JDK17)。 
2. 引入maven坐标:
<dependency>
<groupId>io.github.gemingjia</groupId>
<artifactId>gear-wenxinworkshop-starter</artifactId>
<version>0.0.6</version>
</dependency> 3. 新建一个Controller
@RestController
public class ChatController {

    // 要调用的模型的客户端
    @Resource
    private ErnieBotClient ernieBotClient;

    // 单次对话
    @PostMapping("/chat")
    public BaseResponse<String> chatSingle(String msg) {
      ChatResponse response = ernieBotClient.chatSingle(msg);
      return BaseResponse.success(response.getResult());
    }

    // 连续对话
    @PostMapping("/chats")
    public BaseResponse<String> chatCont(String msg) {
      String chatUID = "test-user-1001";
      ChatResponse response = ernieBotClient.chatCont(msg, chatUID);
      return BaseResponse.success(response.getResult());
    }

    // 流式返回,单次对话
    @PostMapping(value = "/stream/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<ChatResponse> chatSingleStream(String msg) {
      Flux<ChatResponse> chatResponseFlux = ernieBotClient.chatSingleOfStream(msg);
      return chatResponseFlux;
    }

    // 流式返回,连续对话
    @PostMapping(value = "/stream/chats", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<ChatResponse> chatContStream(String msg, String msgUid) {
      Flux<ChatResponse> chatResponseFlux = ernieBotClient.chatContOfStream(msg, msgUid);
      return chatResponseFlux;
    }

} @Data
public class BaseResponse<T> implements Serializable {

    private int code;

    private T data;

    private String message;

    public static <T> BaseResponse<T> success(T data) {
      BaseResponse<T> resp = new BaseResponse<>();
      resp.setData(data);
      resp.setCode(HttpStatus.OK.value());
      return resp;
    }
   
    public static <T> BaseResponse<T> error(int errorCode, String message) {
      BaseResponse<T> resp = new BaseResponse<>();
      resp.setCode(errorCode);
      resp.setMessage(message);
      return resp;
    }

} 4. 运行起来,发送请求试一下
https://i-blog.csdnimg.cn/blog_migrate/0318c084627040343388d138cbdde0cd.png
这是ErnieBot模型的演示,此外starter还提供了ErnieBotClient、ErnieBotTurboClient、Bloomz7BClient 三中模型的客户端,可自行选择使用。

如果这个starter资助您节省了一部分的时间,还请点个star哦~
 项目开源地点&文档:https://github.com/gemingjia/gear-wenxinworkshop-starter

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 怎样申请文心一言&文心千帆大模型API调用资格、获取access_token,并使用Sp