Spring boot集成通義千問大模型

Spring boot集成通義千問大模型

背景

我在用idea進行java開發時發現了通義靈碼這款免費的智能代碼補全插件,用了一段時間了,感覺很不錯。就想著在自己的項目中也能集成通義千問大模型實現智能回答,畢竟對接openai需要解決網絡問題,這個問題是真煩。

開通阿里云賬號

訪問阿里云官網,如果沒注冊就注冊登錄進去,然后搜索通義千問。
在這里插入圖片描述
如果你之前還沒有開通,就點擊立即開通,開通是免費的,無腦操作就行。開通之后,進入產品控制臺
在這里插入圖片描述
可以看到,每期都有一定的免費額度,對于個人來說肯定是夠了。當然對于第一次進來的人,是看不到這個信息,你還需要申請api_key,操作過程如下
在這里插入圖片描述
再之后,我們可以點擊文檔中心,查看具體集成過程了。
在這里插入圖片描述我們進入操作指南下的模型體驗中心,進入頁面點擊通義千問API詳情,這里就有具體的api和java代碼的操作方式。
在這里插入圖片描述

代碼實操

引入maven依賴

java無論用什么第三方功能,第一步就是引入依賴。

        <!-- 對接通義千問大模型 --><dependency><groupId>com.alibaba</groupId><artifactId>dashscope-sdk-java</artifactId><version>2.14.4</version></dependency>
配置api_key

把key配置到yml中,按官方的意思,key應該放環境變量中,我這只是演示,就直接放這里了,要是生產環境使用,要放環境變量中,或者在配置中加密保存。

# 通義千問的apikey
ai:api_key: sk-************
代碼實現

我就在controller層實現對話功能,代碼如下

package org.syx.dts.controller;import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.syx.dts.dto.Dto;import java.util.Arrays;@RestController
@RequestMapping("chat")
@Slf4j
public class ChatController {@Value("${ai.api_key}")private String apiKey;@PostMapping("ask")public String ask(@RequestBody Dto dto) throws Exception {Generation generation = new Generation();Message userMessage = Message.builder().role(Role.USER.getValue()).content(dto.getAsk()).build();GenerationParam param = GenerationParam.builder().model("qwen-turbo").messages(Arrays.asList(userMessage)).resultFormat(GenerationParam.ResultFormat.MESSAGE).topP(0.8).apiKey(apiKey).enableSearch(true).build();GenerationResult generationResult =generation.call(param);;return generationResult.getOutput().getChoices().get(0).getMessage().getContent();}}
前端代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.thymeleaf.org"><head><title>aaaaa</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css"th:href="@{/css/style.css}" /><script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script></head><body><div id="wrap"><div id="top_content"><div id="header"><div id="rightheader"><p>2024/07/20<br /></p></div><div id="topheader"><h1 id="title"><a href="#">aaaa</a></h1></div><div id="navigation"></div></div><div id="content"><p id="whereami"></p><h1>大模型:</h1>條件: <input id="query_name" type="text"  name="ask" /><input type="button" class="button"  id="query_submit" value="查詢" /><br><textarea rows="20" cols="100" id="response" name="response" readonly="readonly"></textarea><p><a href="employee/lists">返回列表</a></p><script>$(function(){$('#query_submit').click(function(){var ask = $('#query_name').val();$.ajax({url: '[[@{/chat/ask}]]',type: 'POST',contentType: 'application/json',data: JSON.stringify({ask:ask}),success: function(data) {$('#response').val(data);},error: function(data) {$('#response').val(data);}});});});</script></div></div><div id="footer"><div id="footer_bg">aaaaa.com</div></div></div></body>
</html>
效果展示

在這里插入圖片描述

總結

總體集成過程還是比較簡單的,官方文檔也是很充實的,更多高級功能,后面再探索吧。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19628.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19628.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19628.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

戰略合作 | 竹云賦能雁塔區數字經濟高質量發展

2024年5月30日&#xff0c;由西安市數據局指導&#xff0c;中共西安市雁塔區委、西安市雁塔區人民政府主辦的 “雁塔區企業數字化轉型發展大會” 在西安開幕。 本次活動以“數智雁塔&#xff0c;引領未來”為主題&#xff0c;特邀業內150余位政府、數字化服務企業、傳統行業企…

Kubernetes 之 DaemonSet 基本原理

Kubernetes 之 DaemonSet 基本原理 DaemonSet 定義 DaemonSet 確保全部&#xff08;或者某些&#xff09;節點上運行一個 Pod 的副本。 當有節點加入集群時&#xff0c; 也會為他們新增一個 Pod 。 當有節點從集群移除時&#xff0c;這些 Pod 也會被回收。刪除 DaemonSet 將會…

先導微型數控桌面式加工中心

隨著數控技術、傳感器技術、人工智能等技術的不斷發展&#xff0c;制造業的快速發展和技術的不斷進步&#xff0c;小型五軸加工中心的性能將不斷提升&#xff0c;五軸聯動技術作為解決異性復雜零件高效優質加工問題的重要手段&#xff0c;使其具有更廣泛的應用前景。小型五軸加…

【啟明智顯分享】國產自主ZX7981P Wi-Fi6 5G-CPE開發板有哪些優勢?

在當前競爭激烈的智能設備市場中&#xff0c;高性能與低功耗的開發板已然成為各大產品追求的關鍵優勢。 今天我們從國產自主研發的ZX7981P Wi-Fi6 5G-CPE開發板的特點出發&#xff0c;分析他是否滿足市場追求的特點。 主要特點&#xff1a; 1. 強大配置&#xff0c;穩定可靠 …

5.30 學習總

刷題記錄(Codeforces Round 947 &#xff08;Div. 1 Div. 2&#xff09;B,C題)和Codeforces Round 948 &#xff08;Div. 2&#xff09;B題 一.B. 378QAQ and Mochas Array B. 378QAQ and Mochas Array time limit per test 1 second memory limit per test 256 megabytes in…

長難句5.30

Researchers measured people’s cortisol, which is a stress marker, while they were at work and while they were at home and found it higher at what is supposed to be a place of refuge. 研究人員測量了人們在工作中和在家里的皮質醇(壓力的一種標志)&#xff0c;結…

在 JavaScript 中循環遍歷數組的多種方法

在JavaScript編程中,遍歷數組是一個非常常見的操作。根據不同的需求和JavaScript的不同版本,我們有多種方法來完成這一操作。本文將介紹幾種有效的方法,包括現代的和傳統的方式,同時分析每一種方法的優缺點。 1. 使用 for...of 語法 for...of 是在 ECMAScript 2015(ES6)…

Spring Boot集成statemachine快速入門demo

1.什么是statemachine&#xff1f; Spring Statemachine 是應用程序開發人員在 Spring 應用程序中使用狀態機概念的框架&#xff0c;從設計層面分析&#xff1a;狀態機目的是解決復雜的狀態管理流程&#xff0c;保證程序單一原則和開閉原則&#xff1b;業務角度分析&#xff1…

【面試】什么是Java虛擬機

目錄 1. 說明2. 關鍵點 1. 說明 1.Java虛擬機&#xff08;Java Virtual Machine&#xff0c;簡稱JVM&#xff09;是運行所有Java程序的抽象計算機&#xff0c;是Java語言的運行環境。2.JVM是Java平臺無關性的關鍵&#xff0c;它允許Java程序在任何支持JVM的硬件和操作系統上運…

【大數據面試題】34 手寫一個 Flink SQL 樣例

一步一個腳印,一天一道大數據面試題 博主希望能夠得到大家的點贊收,藏支持!非常感謝~ 點贊,收藏是情分,不點是本分。祝你身體健康,事事順心! 我們來看看 Flink SQL大概流程和樣例: 流程: 1.創建 流處理環境 StreamExecutionEnvironment env 2.創建 表環境 StreamTab…

為啥裝了erlang,還報錯erl: command not found?

轉載說明&#xff1a;如果您喜歡這篇文章并打算轉載它&#xff0c;請私信作者取得授權。感謝您喜愛本文&#xff0c;請文明轉載&#xff0c;謝謝。 問題背景&#xff1a; 在一臺不通外網的服務器上裝rabbitmq&#xff0c;然后在啟動的時候&#xff0c;遇到了報錯 “/usr/lib/…

C#中使用Mapster

Mapster是一個開源的.NET對象映射庫&#xff0c;它提供了一種簡單而強大的方式來處理對象之間的映射。 多個映射框架的性能對比&#xff1a; 第一步安裝Mapster 使用方法 public class Test {public string name { get; set; }public string sex { get; set; }public string…

C語言數據結構(超詳細講解)| 二叉樹的實現

二叉樹 引言 在計算機科學中&#xff0c;數據結構是算法設計的基石&#xff0c;而二叉樹&#xff08;Binary Tree&#xff09;作為一種基礎且廣泛應用的數據結構&#xff0c;具有重要的地位。無論是在數據庫索引、內存管理&#xff0c;還是在編譯器實現中&#xff0c;二叉樹都…

記錄Win11安裝打印機驅動過程

1. 首先下載打印機對應型號的驅動 可以從這里下載&#xff1a;打印機驅動,打印機驅動下載 - 打印機驅動網 2. 下載 3. 打開控制面板-->設備和打印機 找到目標打印機添加設備即可 新增打印紙張尺寸

B站稿件生產平臺高可用建設分享

背景 B站作為國內領先的內容分享平臺&#xff0c;其核心功能之一便是支持UP主們創作并分享各類視頻內容。UP主稿件系統作為B站內容生產的關鍵環節&#xff0c;承擔著從內容創作到發布的全過程管理。為了滿足不同創作者的需求&#xff0c;B站提供了多種投稿渠道&#xff0c;包括…

方差分析的七種類型

方差分析&#xff08;ANOVA&#xff09;是一種用于檢驗兩個以上樣本均數差別的顯著性統計方法。根據不同的研究設計和數據類型&#xff0c;方差分析可以分為以下7種類型。 一、單因素方差分析 ①單因素方差分析說明 單因素方差分析用于研究一個定類數據&#xff08;自變量&am…

【原創教程】MES服務器與成品打標機控制說明

1 實現的功能及應用的場合 MES即制造執行系統(manufacturing execution system,簡稱MES),即在加強MRP計劃的執行功能,把MRP計劃同車間作業現場控制,通過執行系統聯系起來。 MES是一個生產管理智能化的一個系統,是用于生產時記錄數據、產量等信息的智能管理系統。 該項…

SpockMockStatic方法

SpockMockStatic方法 參考: https://blog.csdn.net/knighttools/article/details/44630975 ? static方法 import com.meituan.mafka.client.producer.IProducerProcessor; import com.meituan.mdp.langmodel.api.message.AssistantMessage; import com.sankuai.gaigc.arrang…

文件批量重命名001到100如何操作?這幾個文件改名小技巧學起來

文件批量重命名001到100怎么操作&#xff1f;作為打工一族&#xff0c;每天都需要跟很多文件打交道&#xff0c;有時文件太多了&#xff0c;查找起來像是大海撈針&#xff0c;特別是圖片文件。這個時候我們就需要對大量文件進行整理和排序&#xff0c;這樣有助于提高我們的工作…

微信小程序 自定義 tabBar

自定義 tabBar | 微信開放文檔 本文案例使用的Taro 非原生微信小程序 使用流程 1. 配置信息 在 app.json 中的 tabBar 項指定 custom 字段&#xff0c;同時其余 tabBar 相關配置也補充完整。所有 tab 頁的 json 里需聲明 usingComponents 項&#xff0c;也可以在 app.json 全局…