最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?Java通過API的方式調用騰訊智能體(騰訊元寶)代碼示例

 更新時間:2025年06月11日 10:06:52   作者:deja?vu?  
這篇文章主要介紹了SpringBoot?Java通過API的方式調用騰訊智能體(騰訊元寶)的相關資料,詳細說明參數(shù)獲取及動態(tài)處理方法,提供結果字符串轉數(shù)組技巧,需要的朋友可以參考下

引言

我發(fā)現(xiàn)官網只有Python的調用代碼示例,在網上也沒找到有人分享Java的例子,因此就有了這篇文章,前人栽樹后人乘涼(如果你只想看代碼部分可跳到文章后半部分)。

一、獲取調用API所需要的參數(shù)信息:

首先我們進入騰訊元器獲取調用API所需要的參數(shù)信息;鏈接:https://yuanqi.tencent.com/

點擊【我的創(chuàng)建】,找到自己想要API調用的智能體,點擊【更多】,點擊【調用API】。

我們會得到調用所需要的信息:url、assistant_id、token等。

調用信息的具體意義可參考官網文檔:?https://docs.qq.com/aio/p/scxmsn78nzsuj64?p=unUU8C3HBocfQSOGAh2BYuC

請求參數(shù)(其中紅框為必填項): 

二、代碼實現(xiàn):

【代碼1】:

 主要是對請求參數(shù)的處理;官方給的參數(shù)例子格式是:

String jsonInputString = "{\n" +
                "  \"assistant_id\": \"你的assistant_id\",\n" +
                "  \"user_id\": \"username\",\n" +
                "  \"stream\": false,\n" +
                "  \"messages\": [\n" +
                "    {\n" +
                "      \"role\": \"user\",\n" +
                "      \"content\": [\n" +
                "        {\n" +
                "          \"type\": \"text\",\n" +
                "          \"text\": \"開始\"\n" +
                "        }\n" +
                "      ]\n" +
                "    }\n" +
                "  ]\n" +
                "}";

但是我們一般情況下不能這樣寫死,所以需要動態(tài)處理請求參數(shù),如下: 

String url = 你的url";
String token = "你的token";
try {
            Map m = new HashMap();
            m.put("assistant_id","你的assistant_id");
            m.put("user_id","username");
            m.put("stream",false);
            List mesg = new ArrayList();
            Map m2 = new HashMap();
            m2.put("role","user");
            Map m3 = new HashMap();
            m3.put("type","text");
            m3.put("text","開始");
            List content = new ArrayList();
            content.add(m3);
            m2.put("content",content);
            mesg.add(m2);
            m.put("messages",mesg);
            Gson gson = new Gson();
            String json = gson.toJson(m);
            List list = accessRetailApi.doPostJson5(url,json,token);
        }catch (Exception e){
            e.printStackTrace();
        }

【代碼1】所引用的包參考:

import com.google.gson.Gson;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

【代碼2】:

上面調用的accessRetailApi.doPostJson5(url,json,token)方法的代碼內容:

//API方式調用騰訊智能體(元寶)
    public List doPostJson5(String apiurl, String jsonInput,String auth) throws IOException {
        // API 的 URL
        String url = apiurl;

        // 請求頭
        String authorizationToken = auth; // 替換為實際的Token

        String jsonInputString = jsonInput;
        // 創(chuàng)建URL對象
        URL obj = new URL(url);

        // 打開連接
        HttpURLConnection connection = (HttpURLConnection) obj.openConnection();

        // 設置請求方法為 POST
        connection.setRequestMethod("POST");

        // 設置請求頭
        connection.setRequestProperty("X-Source", "openapi");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("Authorization", "Bearer " + authorizationToken);

        // 啟用輸入輸出流
        connection.setDoOutput(true);

        // 將請求體寫入輸出流
        try (OutputStream os = connection.getOutputStream()) {
            byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
            os.write(input, 0, input.length);
        }

        // 獲取響應狀態(tài)碼;為200即成功
        int responseCode = connection.getResponseCode();
        System.out.println("Response Code: " + responseCode);

        List result = new ArrayList();
        // 讀取響應內容
        try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            String resultstr = response.toString();
            System.out.println("Response: " + response.toString());
            result = strToList(resultstr,"choices");
            System.out.println("result: " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    //把JSON類型字符串轉換成List<Map>
    public static List strToList(String liststr, String path) throws Exception{
        ObjectMapper mapper = new ObjectMapper();
        JsonNode rootNode = mapper.readTree(liststr);
        // 訪問路徑的數(shù)組
        JsonNode datasNode = rootNode.path(path);
        // 創(chuàng)建一個List來存儲Map
        List<Map<String, Object>> datasList = new ArrayList<>();

        // 遍歷數(shù)組中的每個元素(JsonNode),并將其轉換為Map
        for (JsonNode dataNode : datasNode) {
            Map<String, Object> dataMap = new HashMap<>();
            dataNode.fields().forEachRemaining(entry -> {
                // 注意:這里簡單地將所有值都視為Object類型
                // 對于更復雜的類型(如嵌套對象或數(shù)組),你可能需要進一步的邏輯來處理它們
                dataMap.put(entry.getKey(), entry.getValue().asText());
                if(entry.getKey().equals("message")) {
                    ObjectMapper objectMapper = new ObjectMapper();
                    Map<String, Object> resultMap = new HashMap<>();
                    try {
                        // 首先,將整個JSON字符串解析為JsonNode
                        JsonNode rootNode2 = objectMapper.readTree(entry.getValue().toString());
                        // 將JsonNode轉換為Map<String, Object>
                        resultMap = objectMapper.convertValue(rootNode2, Map.class);
                        dataMap.replace("message", resultMap);
                    } catch (JsonMappingException e) {
                        e.printStackTrace();
                    } catch (JsonProcessingException e) {
                        e.printStackTrace();
                    }
                }
            });
            datasList.add(dataMap);
        }
        return datasList;
    }

 其中特意要講解一下的是strToList方法,這個方法是把調用成功返回的字符串結果轉換成數(shù)組;

例如:獲得的resultstr是這樣一段字符串:

通過 strToList(resultstr,"choices")方法把“choices”路徑下提取成數(shù)組List,方便后續(xù)處理:

【代碼2】所引用的包參考:

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

總結 

到此這篇關于SpringBoot Java通過API的方式調用騰訊智能體(騰訊元寶)的文章就介紹到這了,更多相關Java API調用騰訊元寶內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何保證RabbitMQ全鏈路數(shù)據100%不丟失問題

    如何保證RabbitMQ全鏈路數(shù)據100%不丟失問題

    這篇文章主要介紹了如何保證RabbitMQ全鏈路數(shù)據100%不丟失問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java由淺入深學習數(shù)組的使用

    Java由淺入深學習數(shù)組的使用

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據結構之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-05-05
  • 詳解Spring Cloud Hystrix斷路器實現(xiàn)容錯和降級

    詳解Spring Cloud Hystrix斷路器實現(xiàn)容錯和降級

    本篇文章主要介紹了詳解Spring Cloud Hystrix斷路器實現(xiàn)容錯和降級,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • spring @schedule注解如何動態(tài)配置時間間隔

    spring @schedule注解如何動態(tài)配置時間間隔

    這篇文章主要介紹了spring @schedule注解如何動態(tài)配置時間間隔,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot實現(xiàn)多數(shù)據源配置的示例詳解

    SpringBoot實現(xiàn)多數(shù)據源配置的示例詳解

    這篇文章主要為大家詳細介紹了SpringBoot實現(xiàn)多數(shù)據源配置的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-12-12
  • MybatisPlus字段類型轉換的實現(xiàn)示例

    MybatisPlus字段類型轉換的實現(xiàn)示例

    本文主要介紹了MybatisPlus如何完成字段類型轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • JAVA值傳遞和引用傳遞方式

    JAVA值傳遞和引用傳遞方式

    文章總結:在Java中,處理不可變集合時,直接修改操作會拋出異常,正確的做法是使用可變集合類型,如ArrayList,或者通過流操作(stream().filter())來實現(xiàn)修改,理解Java方法參數(shù)的傳遞方式(值傳遞)是關鍵,這決定了如何正確地修改對象的狀態(tài)
    2024-11-11
  • springboot如何靜態(tài)加載@configurationProperties

    springboot如何靜態(tài)加載@configurationProperties

    這篇文章主要介紹了springboot如何靜態(tài)加載@configurationProperties,本文一個錯誤案例和成功案例結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Springboot如何切換默認的Tomcat容器

    Springboot如何切換默認的Tomcat容器

    這篇文章主要介紹了Springboot如何切換默認的Tomcat容器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • mysql高版本(8.0+)group_by報錯的處理方法

    mysql高版本(8.0+)group_by報錯的處理方法

    本文主要介紹了mysql高版本(8.0+)group_by報錯的處理方法,這個錯誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來介紹一下兩種解決方法,感興趣的可以了解一下
    2023-09-09

最新評論

台湾省| 喀喇沁旗| 延庆县| 绩溪县| 彩票| 高雄县| 布拖县| 杭州市| 阿鲁科尔沁旗| 喀喇| 盱眙县| 武胜县| 嘉义县| 冀州市| 大田县| 平利县| 平和县| 桃源县| 梁河县| 恩平市| 自贡市| 义马市| 玉环县| 广德县| 香河县| 吐鲁番市| 涿州市| 翼城县| 康保县| 岐山县| 祁阳县| 兴安盟| 宜川县| 莱州市| 裕民县| 长汀县| 民丰县| 隆安县| 道真| 全椒县| 伊吾县|