国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

百度文心一言接入教程-Java版

這篇具有很好參考價值的文章主要介紹了百度文心一言接入教程-Java版。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

原文鏈接

前言

前段時間由于種種原因我的AI BOT https://chat.jylt.top網(wǎng)站停運了數(shù)天,后來申請了百度的文心一言和阿里的通義千問開放接口,文心一言的接口很快就通過了,但是文心一言至今杳無音訊。文心一言通過審之后,很快將AI BOT的AI能力接入了文心一言,這里記錄一下具體的接入方案。歡迎前往網(wǎng)站體驗。

溫馨大模型SDK現(xiàn)已開源:https://gitee.com/gitwcx/baidu-model-java-sdk

文心一言應(yīng)用創(chuàng)建

首先需要先申請文心千帆大模型,申請地址:文心一言 (baidu.com),點擊加入體驗,等通過審核之后就可以進入文心千帆大模型后臺進行應(yīng)用管理了。百度文心一言接入教程-Java版,Java筆記,工具分享,百度,文心一言,java

在百度智能云首頁即可看到文心千帆大模型平臺

百度文心一言接入教程-Java版,Java筆記,工具分享,百度,文心一言,java

然后進入后臺管理之后,點擊應(yīng)用接入,創(chuàng)建應(yīng)用即可

百度文心一言接入教程-Java版,Java筆記,工具分享,百度,文心一言,java

創(chuàng)建完應(yīng)應(yīng)用之后,便可以調(diào)用文心一言的http開發(fā)接口進行交互了。

接口對接

接口文檔

首先要看一下接口文檔:API調(diào)用指南 - 文心千帆WENXINWORKSHOP | 百度智能云文檔 (baidu.com)

這里我用的是ERNIE-Bot-turbo API,主要是由于它響應(yīng)更快。

下面介紹一下具體接入的代碼

代碼示例

依賴

  • 依賴安裝
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>baidu</artifactId>
        <groupId>com.walter</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <version>1.0</version>
    <artifactId>baidumodel</artifactId>
    <description>百度大模型</description>

    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
	    <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-http</artifactId>
            <version>5.8.11</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-json</artifactId>
            <version>5.8.11</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
	    <version>1.18.12</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp-sse</artifactId>
	    <version>3.14.9</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
	    <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
    </dependencies>
</project>

常量類

  • ApiConstant.java
@Slf4j
public class ApiConstant {

    /**
     * ERNIE_BOT_TURBO 發(fā)起會話接口
     */
    public static final String ERNIE_BOT_TURBO_INSTANT = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=";

    public static String getToken(String appKey, String secretKey) {
        String url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + appKey + "&client_secret=" + secretKey;
        String s = HttpUtil.get(url);
        Token bean = JSONUtil.toBean(s, Token.class);
        return bean.getAccess_token();
    }
}

實體類

  • BaiduChatMessage.java
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BaiduChatMessage implements Serializable {
    private String role;
    private String content;
}
  • ErnieBotTurboResponse.java
@Data
public class ErnieBotTurboResponse implements Serializable {
    private String id;
    private String object;
    private Integer created;

    private String sentence_id;
    private Boolean is_end;
    private Boolean is_truncated;
    private String result;
    private Boolean need_clear_history;

    private Usage usage;

    @Data
    public static class Usage implements Serializable {
        private Integer prompt_tokens;
        private Integer completion_tokens;
        private Integer total_tokens;

    }
}
  • ErnieBotTurboStreamParam.java
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ErnieBotTurboStreamParam implements Serializable {

    private List<BaiduChatMessage> messages;
    private Boolean stream;
    private String user_id;

    public boolean isStream() {
        return Objects.equals(this.stream, true);
    }
}

  • Token.java
@Data
public class Token implements Serializable {
    private String access_token;
    private Integer expires_in;
    private String error;
    private String error_description;
}
  • BaiduEventSourceListener.java
// 這個類主要是為了與文心一言API建立流式連接,實現(xiàn)數(shù)據(jù)的實時返回,而不是等完整的數(shù)據(jù)生成之后才將數(shù)據(jù)返回
// 可以減少用戶等待時間,實現(xiàn)更好的交互體驗
@Slf4j
public class BaiduEventSourceListener extends EventSourceListener {

    @Override
    public void onOpen(EventSource eventSource, Response response) {
        log.info("baidu建立sse連接...");
    }

    @Override
    public void onEvent(EventSource eventSource, String id, String type, String data) {
        log.info("baidu返回數(shù)據(jù):{}", data);
    }

    @Override
    public void onClosed(EventSource eventSource) {
        log.info("baidu關(guān)閉sse連接...");
    }

    @SneakyThrows
    @Override
    public void onFailure(EventSource eventSource, Throwable t, Response response) {
        if(Objects.isNull(response)){
            log.error("baidu  sse連接異常:{}", t);
            eventSource.cancel();
            return;
        }
        ResponseBody body = response.body();
        if (Objects.nonNull(body)) {
            log.error("baidu  sse連接異常data:{},異常:{}", body.string(), t);
        } else {
            log.error("baidu  sse連接異常data:{},異常:{}", response, t);
        }
        eventSource.cancel();
    }
}
  • BaiduService.java
// 該類主要是處理接口請求,處理接口響應(yīng)邏輯
@Slf4j
@Data
public class BaiduService {

    private static final long TIME_OUT = 30;

    private OkHttpClient okHttpClient;
    private String appKey;
    private String secretKey;

    public BaiduService(@NonNull String appKey, @NonNull String secretKey) {
        this.appKey = appKey;
        this.secretKey = secretKey;
        this.okHttpClient(30, 30, 30, null);
    }

    public BaiduService(@NonNull String appKey, @NonNull String secretKey, long connectTimeout, long writeTimeout, long readTimeout, Proxy proxy) {
        this.appKey = appKey;
        this.secretKey = secretKey;
        this.okHttpClient(connectTimeout, writeTimeout, readTimeout, proxy);
    }


    private void okHttpClient(long connectTimeout, long writeTimeout, long readTimeout, Proxy proxy) {
        OkHttpClient.Builder client = new OkHttpClient.Builder();
        client.connectTimeout(connectTimeout, TimeUnit.SECONDS);
        client.writeTimeout(writeTimeout, TimeUnit.SECONDS);
        client.readTimeout(readTimeout, TimeUnit.SECONDS);
        if (Objects.nonNull(proxy)) {
            client.proxy(proxy);
        }
        this.okHttpClient = client.build();
    }

    // 該方法是同步請求API,會等大模型將數(shù)據(jù)完全生成之后,返回響應(yīng)結(jié)果,可能需要等待較長時間,視生成文本長度而定
    public ErnieBotTurboResponse ernieBotTurbo(ErnieBotTurboStreamParam param) {
        if (param == null) {
            log.error("參數(shù)異常:param不能為空");
            throw new RuntimeException("參數(shù)異常:param不能為空");
        }
        if (param.isStream()) {
            param.setStream(false);
        }
        String post = HttpUtil.post(ApiConstant.ERNIE_BOT_TURBO_INSTANT + ApiConstant.getToken(appKey, secretKey), JSONUtil.toJsonStr(param));
        return JSONUtil.toBean(post, ErnieBotTurboResponse.class);
    }

    // 該方法是通過流的方式請求API,大模型每生成一些字符,就會通過流的方式相應(yīng)給客戶端,
    // 我們是在 BaiduEventSourceListener.java 的 onEvent 方法中獲取大模型響應(yīng)的數(shù)據(jù),其中data就是具體的數(shù)據(jù),
    // 我們獲取到數(shù)據(jù)之后,就可以通過 SSE/webscocket 的方式實時相應(yīng)給前端頁面展示
    public void ernieBotTurboStream(ErnieBotTurboStreamParam param, EventSourceListener eventSourceListener) {
        if (Objects.isNull(eventSourceListener)) {
            log.error("參數(shù)異常:EventSourceListener不能為空");
            throw new RuntimeException("參數(shù)異常:EventSourceListener不能為空");
        }
        if (param == null) {
            log.error("參數(shù)異常:param不能為空");
            throw new RuntimeException("參數(shù)異常:param不能為空");
        }
        if (!param.isStream()) {
            param.setStream(true);
        }
        try {
            EventSource.Factory factory = EventSources.createFactory(this.okHttpClient);
            ObjectMapper mapper = new ObjectMapper();
            String requestBody = mapper.writeValueAsString(param);
            Request request = new Request.Builder()
                    .url(ApiConstant.ERNIE_BOT_TURBO_INSTANT + ApiConstant.getToken(appKey, secretKey))
                    .post(RequestBody.create(MediaType.parse(ContentType.JSON.getValue()), requestBody))
                    .build();
            //創(chuàng)建事件
            EventSource eventSource = factory.newEventSource(request, eventSourceListener);
        } catch (JsonProcessingException e) {
            log.error("請求參數(shù)解析是失??!", e);
            throw new RuntimeException("請求參數(shù)解析是失??!", e);
        }

    }
}

結(jié)束語

以上就是通過文心一言的OpenAPI與大模型交互的整體邏輯,等代碼功能再做完善之后,改代碼會以SDK的方式開源到Gitee,歡迎一起探討文章來源地址http://www.zghlxwxcb.cn/news/detail-617271.html

到了這里,關(guān)于百度文心一言接入教程-Java版的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • AI百度文心一言大語言模型接入使用(中國版ChatGPT)

    AI百度文心一言大語言模型接入使用(中國版ChatGPT)

    基于百度文心一言語言大模型的智能文本對話AI機器人API,支持聊天對話、行業(yè)咨詢、語言學(xué)習(xí)、代碼編寫等功能. 重要提示:建議使用https協(xié)議,當(dāng)https協(xié)議無法使用時再嘗試使用http協(xié)議 請求方式: POST 序號 參數(shù) 是否必須 說明 1 ques 是 你的問題 2 appKey 是 唯一驗證AppKey, 可前往官

    2024年02月12日
    瀏覽(34)
  • 用友大易接入百度文心一言,打造數(shù)智招聘人工智能全新服務(wù)

    用友大易接入百度文心一言,打造數(shù)智招聘人工智能全新服務(wù)

    近日, 用友大易宣布與百度文心一言(英文名:ERNIE Bot)達成戰(zhàn)略生態(tài)合作。后續(xù),用友大易智能招聘云將全面接入文心一言的能力,持續(xù)探索新人工智能時代下的招聘服務(wù)與體驗。 文心一言(英文名:ERNIE Bot)是百度基于文心大模型技術(shù)推出的生成式對話產(chǎn)品。百度在人

    2024年02月04日
    瀏覽(26)
  • 神策數(shù)據(jù)宣布接入百度文心一言能力,落地營銷云智能應(yīng)用場景

    神策數(shù)據(jù)宣布接入百度文心一言能力,落地營銷云智能應(yīng)用場景

    2 月 15 日,神策數(shù)據(jù)宣布成為百度文心一言(英文名:ERNIE Bot)首批生態(tài)合作伙伴。后續(xù),神策數(shù)據(jù)將全面體驗并接入文心一言的能力,為更多行業(yè)的更多企業(yè)帶來更加智能化、高效率的分析云與營銷云產(chǎn)品。 神策數(shù)據(jù)正在為超過 2000 家企業(yè)提供數(shù)字化用戶運營的軟件和解決

    2024年02月15日
    瀏覽(21)
  • 百度“文心一言”首批生態(tài)合作伙伴公布,Moka接入打造人力資源數(shù)字化人AI服務(wù)

    百度“文心一言”首批生態(tài)合作伙伴公布,Moka接入打造人力資源數(shù)字化人AI服務(wù)

    近日,百度“文心一言” ( 英文名:ERNIE Bot ) 公布 首批生態(tài)合作伙伴,企業(yè)級HR SaaS服務(wù)商Moka 位列其中 , 將優(yōu)先體驗并接入“文心一言”,以此打造更創(chuàng)新、更智能的人力資源數(shù)字化服務(wù)。 “文心一言”是百度基于文心大模型技術(shù)推出的生成式對話產(chǎn)品。百度在人工智

    2024年02月15日
    瀏覽(20)
  • Java接入文心一言

    首先需要先申請文心千帆大模型,申請地址:文心一言 (baidu.com),點擊加入體驗,等通過審核之后就可以進入文心千帆大模型后臺進行應(yīng)用管理了。 在百度智能云首頁即可看到文心千帆大模型平臺 然后進入后臺管理之后,點擊應(yīng)用接入,創(chuàng)建應(yīng)用即可 創(chuàng)建完應(yīng)應(yīng)用之后,便

    2024年02月10日
    瀏覽(20)
  • 百度文心一言4.0搶先體驗教程!

    百度文心一言4.0搶先體驗教程!

    ?? 展望:關(guān)注我, AI學(xué)習(xí)之旅上,我與您一同成長! 想快速體驗文心一言4.0,但又覺得技術(shù)難度太高?別擔(dān)心,我來手把手教你! ?? 10月17日,文心一言4.0震撼亮相,帶著一系列閃亮的AI原生應(yīng)用與服務(wù)。這包括了 百度新搜索、百度地圖、百度新文庫、百度網(wǎng)盤、百度新如

    2024年02月08日
    瀏覽(22)
  • 對接百度文心一言API---人工智能工作筆記0039

    對接百度文心一言API---人工智能工作筆記0039

    1.獲取文心一言的api key 這個地址然后 點擊 創(chuàng)建API key就可以了 然后先用postman測試一下 ?注意 ?這里的參數(shù)grant_type這個是client_credentials是固定的,然后 Content-Type也按照上面寫上 然后 看返回的內(nèi)容 ,這個返回的data要記住. 然后再去訪問:

    2024年02月11日
    瀏覽(16)
  • Chat2DB接入文心一言AI教程(教程,轉(zhuǎn)載請注明)
  • Java對接百度文心一言,Java發(fā)送POST請求,類似前端AJAX

    這是項目中使用的對接百度文心一言后端代碼

    2024年02月15日
    瀏覽(21)
  • 百度生成式AI產(chǎn)品文心一言邀請測試,五大場景、五大能力革新生產(chǎn)力工具

    隨著科技的飛速發(fā)展,人工智能(AI)正在成為推動社會進步和提升生產(chǎn)力的關(guān)鍵力量。百度推出的生成式AI產(chǎn)品文心一言,以其五大場景和五大能力,將生產(chǎn)力工具帶入一個全新的時代。 文心一言作為一款生成式AI產(chǎn)品,旨在通過深度學(xué)習(xí)技術(shù),理解和生成自然語言,實現(xiàn)人機

    2024年02月13日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包