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

Spring AI與大模型Ollama如何集成整合?

這篇具有很好參考價(jià)值的文章主要介紹了Spring AI與大模型Ollama如何集成整合?。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Python 是進(jìn)入人工智能領(lǐng)域(認(rèn)為是機(jī)器學(xué)習(xí)或生成人工智能AIGC)的主要武器,Java 和 Spring 仍引領(lǐng)著大多數(shù)開發(fā)社區(qū), Java 開發(fā)人員如何與 LLM大模型 一起工作?這就是 Spring AI 彌補(bǔ)差距的地方。

Spring AI在 Spring 應(yīng)用程序和可以在本地運(yùn)行的 LLM 之間創(chuàng)建集成,這為所有 Java 開發(fā)人員提供了開發(fā)人工智能應(yīng)用程序的能力。

在本文中,我們將了解如何使用 Ollama 在本地運(yùn)行大模型,我們將考慮四個(gè)方面。

  1. 本地安裝并運(yùn)行 Ollama 和 LLM
  2. 創(chuàng)建SpringAI項(xiàng)目并詳細(xì)查看項(xiàng)目配置。
  3. 訪問本地嵌入。
  4. 訪問本地聊天模型。

安裝并運(yùn)行 Ollama
導(dǎo)航至https://ollama.com/download下載適用于特定操作系統(tǒng)的 ollama。

下載 ollama 后,打開終端并輸入以下命令以提取 LLM 并在本地運(yùn)行它們。
ollama run llama2 # pulls llama2 LLM model
ollama run mistral # pulls and runs mistral LLM

創(chuàng)建 Spring AI 項(xiàng)目
如果你使用任何集成開發(fā)環(huán)境(我使用的是 IntelliJ)或基于 Web 的 Spring Intializr,那么你可以看到現(xiàn)在可以直接從 Spring Intializr 添加 AI 依賴項(xiàng)。在本例中,我們將添加 Ollama。在執(zhí)行此步驟之前,請按照步驟 1 確保已安裝 Ollama 并在本地運(yùn)行。

讓我們深入研究一下 application.yaml,看看與 ollama 有關(guān)的不同項(xiàng)目配置。

spring:
ai:
ollama:
embedding:
model: "llama2" options:
temperature: 0.5
top-p: 0.2
top-k: 2
num-g-p-u: 1 enable metal gpu on MAC
base-url: "http://localhost:11434"

有關(guān)嵌入和聊天模型的更多配置可分別在這里?here?和這里here?找到。請注意一點(diǎn),Spring 默認(rèn)配置可與 Mistral LLM 配合使用,但我們已明確用 llama2 替代。

實(shí)體記錄
首先,我們將創(chuàng)建兩個(gè)記錄:Payload 和 Response,名稱更加直觀。

package org.vaslabs.springai2.records;

public record Payload(String strings) {
}
package org.vaslabs.springai2.records;

import java.util.List;

public record Response(List data) {
}

服務(wù)類
現(xiàn)在讓我們創(chuàng)建一個(gè)服務(wù)類,它將幫助我們?yōu)榻o定的輸入字符串生成嵌入結(jié)果。

import org.springframework.ai.embedding.EmbeddingClient;
import org.springframework.ai.embedding.EmbeddingRequest;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.stereotype.Service;
import org.vaslabs.springai2.records.Payload;

import java.util.List;
import java.util.Map;

@Service
public class OllamaEmbeddingsGenerator {
private final EmbeddingClient embeddingClient;

? ? public OllamaEmbeddingsGenerator(EmbeddingClient embeddingClient) {
this.embeddingClient = embeddingClient;
}

? ? public EmbeddingResponse getEmbeddingsWithModelOverride(Payload payload) {
return this.embeddingClient.call(new EmbeddingRequest(
List.of(payload.strings()),
OllamaOptions.create().withModel("mistral")));
}

? ? public Map<String, EmbeddingResponse> getEmbeddingsWithDefaultModel(Payload payload) {
EmbeddingResponse embeddingResponse = this.embeddingClient.embedForResponse(
List.of(payload.strings()));
return Map.of("embedding", embeddingResponse);
}
}

上述 OllamaEmbeddingsGenerator 類定義在 Spring 應(yīng)用程序的 org.vaslabs.springai2.service 包中,是生成文本嵌入的服務(wù)組件。它利用 Spring AI 框架的嵌入式客戶端(EmbeddingClient)將文本數(shù)據(jù)轉(zhuǎn)換為嵌入式,即在自然語言處理任務(wù)中非常有用的向量表示。

該服務(wù)配備了兩個(gè)主要方法:getEmbeddingsWithModelOverride 和 getEmbeddingsWithDefaultModel。

  • 前一種方法允許指定用于嵌入生成的模型(例如 "mistral"),從而可以根據(jù)請求自定義行為。

  • 后一種方法則使用客戶端的默認(rèn)模型設(shè)置生成嵌入。這兩種方法的操作方式都是獲取一個(gè) Payload 對象(該對象封裝了要嵌入的字符串),并以不同的格式返回嵌入結(jié)果--在 getEmbeddingsWithModelOverride 的情況下直接返回 EmbeddingResponse,而在 getEmbeddingsWithDefaultModel 的情況下返回一個(gè)包含 EmbeddingResponse 的映射。

這種設(shè)計(jì)封裝了與嵌入式生成技術(shù)交互的復(fù)雜性,并為應(yīng)用程序中的各種嵌入式生成需求提供了靈活的應(yīng)用程序接口。

讓我們再了解一項(xiàng)有助于創(chuàng)建聊天一代的服務(wù)。

import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
public class OllamaChatGenerator {

? ? private final OllamaChatClient ollamaChatClient;

? ? public OllamaChatGenerator(OllamaChatClient ollamaChatClient) {
this.ollamaChatClient = ollamaChatClient;
}

? ? public Map generate(String message) {
return Map.of("generation", this.ollamaChatClient.call(message));
}
}

  • 上述 Java 類 OllamaChatGenerator 定義在 org.vaslabs.springai2.service 包中,設(shè)計(jì)為 Spring 服務(wù),通過利用 Spring AI 框架中的 OllamaChatClient 來促進(jìn)聊天交互。

  • 該服務(wù)使用 @Service 注解進(jìn)行 Spring 組件掃描,封裝了一種簡單而有效的方法來生成聊天響應(yīng)。

  • 通過構(gòu)造函數(shù)實(shí)例化后,它會接收一個(gè) OllamaChatClient 對象,從而建立起與底層聊天模型或服務(wù)通信的依賴關(guān)系。

  • 該服務(wù)的主要功能通過 generate 方法公開,該方法接受字符串消息作為輸入,并返回一個(gè)包含以 "generation "為關(guān)鍵字的聊天生成結(jié)果的映射。

這種設(shè)置抽象化了與人工智能驅(qū)動的聊天功能進(jìn)行交互的復(fù)雜性,為 Spring 應(yīng)用程序的其他組件提供了一種直接的方法,可根據(jù)用戶輸入生成動態(tài)的對話式響應(yīng)。

控制器
現(xiàn)在是為上述兩個(gè)服務(wù)編寫控制器的時(shí)候了,它們可以分別處理終端用戶的請求。這些控制器將幫助我們選擇用戶所需的功能。

import org.springframework.ai.embedding.Embedding;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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.vaslabs.springai2.records.Payload;
import org.vaslabs.springai2.records.Response;
import org.vaslabs.springai2.service.OllamaEmbeddingsGenerator;

import java.util.Map;

@RestController
@RequestMapping("/api/v1")
public class OllamaEmbeddingController {

? ? private final OllamaEmbeddingsGenerator ollamaEmbeddingsGenerator;

? ? public OllamaEmbeddingController(OllamaEmbeddingsGenerator ollamaEmbeddingsGenerator) {
this.ollamaEmbeddingsGenerator = ollamaEmbeddingsGenerator;
}
@PostMapping(value = "/embedding1", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity fetchEmbeddings1(@RequestBody Payload payload){
Embedding embedding = this.ollamaEmbeddingsGenerator.getEmbeddingsWithModelOverride(payload).getResult();
return ResponseEntity.ok( new Response(embedding.getOutput()));
}

? ? @PostMapping(value = "/embedding2", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, EmbeddingResponse>> fetchEmbeddings2(@RequestBody Payload payload){
Map<String, EmbeddingResponse> embedding = this.ollamaEmbeddingsGenerator.getEmbeddingsWithDefaultModel(payload);
return ResponseEntity.ok(embedding);
}
}

import org.springframework.http.MediaType;
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.vaslabs.springai2.records.Payload;
import org.vaslabs.springai2.service.OllamaChatGenerator;

import java.util.Map;

@RestController
@RequestMapping("/api/v1")
public class OllamaChatController {

? ? private final OllamaChatGenerator ollamaChatGenerator;

? ? public OllamaChatController(OllamaChatGenerator ollamaChatGenerator) {
this.ollamaChatGenerator = ollamaChatGenerator;
}

? ? @PostMapping(value = "/chat", produces = MediaType.APPLICATION_JSON_VALUE)
public Map chat(@RequestBody Payload payload){
return this.ollamaChatGenerator.generate(payload.strings());
}
}

如果上述代碼和配置都沒有問題,那么我們就可以運(yùn)行該項(xiàng)目了(需要注意的是,請確保在本地運(yùn)行 ollama)。

查看 OllamaEmbeddingController 的路由 /embedding1 和 /embedding2 非常有趣,第一個(gè)路由通過在服務(wù)中以編程方式覆蓋模型的配置來使用 Mistral 模型,而后一個(gè)路由則使用 application.yaml 中的默認(rèn)配置。

結(jié)論
總之,將 Ollama 與 Spring AI 結(jié)合使用,是將先進(jìn)的大型語言模型 (LLM) 直接集成到應(yīng)用程序中的令人信服的解決方案,可提供嵌入和文本生成功能。借助 Ollama 在本地運(yùn)行 LLM 的能力,開發(fā)人員可以對人工智能驅(qū)動的功能獲得前所未有的控制力和靈活性,確保數(shù)據(jù)隱私并減少延遲。

Spring AI 通過 OllamaEmbeddingClient 和 OllamaChatClient 對 Ollama 的支持簡化了集成過程,在 Spring 生態(tài)系統(tǒng)中實(shí)現(xiàn)了無縫嵌入生成和對話式人工智能功能。這種組合不僅使最先進(jìn)的人工智能技術(shù)的使用更加平民化,而且還增強(qiáng)了應(yīng)用程序的可擴(kuò)展性和響應(yīng)能力,使其成為希望集成智能、上下文感知交互和數(shù)據(jù)處理功能的開發(fā)人員的理想選擇。

https://www.jdon.com/72804.html文章來源地址http://www.zghlxwxcb.cn/news/detail-857509.html

到了這里,關(guān)于Spring AI與大模型Ollama如何集成整合?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 如何試用 Ollama 運(yùn)行本地模型 Mac M2

    如何試用 Ollama 運(yùn)行本地模型 Mac M2

    首先下載 Ollama 安裝完成之后,啟動 ollma 對應(yīng)的模型,這里用的是 qwen:7b 命令與模型直接交互 我的機(jī)器配置是M2 Pro/ 32G,運(yùn)行 7b 模型毫無壓力,而且推理時(shí)是用 GPU 進(jìn)行運(yùn)算的,可能就是 Ollama 底層是用 llama C++ 實(shí)現(xiàn)的,底層做了性能優(yōu)化,對 Mac特別友好。 純C/C++實(shí)現(xiàn),沒有

    2024年04月10日
    瀏覽(26)
  • 免費(fèi)打造個(gè)人專屬的高顏值本地大模型AI助手,無限量使用 Ollama+LobeChat開源工具,在本地運(yùn)行AI大模型,安全的和AI對話。

    免費(fèi)打造個(gè)人專屬的高顏值本地大模型AI助手,無限量使用 Ollama+LobeChat開源工具,在本地運(yùn)行AI大模型,安全的和AI對話。

    第一步,首先安裝ollama,選擇對應(yīng)系統(tǒng)的安裝包 ollama官網(wǎng)地址:https://ollama.com/ 本問是lunix系統(tǒng)上安裝ollama: 如果機(jī)子沒有GPU顯卡的話,ollama會提示只通過cpu模式運(yùn)行。 測試ollama命令: 想要流暢運(yùn)行,推薦配置: 4b的模型:8GB內(nèi)存。 7b的模型:16GB內(nèi)存。 13b模型: 32GB內(nèi)存。 70b模

    2024年04月26日
    瀏覽(42)
  • AI大模型【基礎(chǔ) 01】智能AI開源模型與大模型接口整理(8個(gè)開源模型+7個(gè)大模型接口)

    數(shù)據(jù)主要來源于 【數(shù)據(jù)學(xué)習(xí)】的整理和匯總。 免費(fèi)、本地部署安全性高 部分開源模型版本相對落后、硬件資源需求高、性能一般 技術(shù)門檻高、需要進(jìn)行一定量的開發(fā)工作 更新維護(hù)成本較高 付費(fèi)(按需收費(fèi))、非本地部署可能存在數(shù)據(jù)安全問題 模型較新、無需硬件資源、性

    2024年01月25日
    瀏覽(23)
  • AIGC 實(shí)戰(zhàn):如何使用 Ollama 開發(fā)自定義的大模型(LLM)

    雖然 Ollama 提供了運(yùn)行和交互式使用大型語言模型(LLM)的功能,但從頭開始創(chuàng)建完全定制化的 LLM 需要 Ollama 之外的其他工具和專業(yè)知識。然而,Ollama 可以通過微調(diào)在定制過程中發(fā)揮作用。以下是細(xì)分說明: 預(yù)訓(xùn)練模型選擇: Ollama 提供了一個(gè)預(yù)訓(xùn)練的開源 LLM 庫,例如 Ll

    2024年03月10日
    瀏覽(25)
  • AI大模型應(yīng)用入門實(shí)戰(zhàn)與進(jìn)階:圖像識別與大模型:ViT解析

    隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,大模型在圖像識別領(lǐng)域取得了顯著的成功。ViT(Vision Transformer)是Google Brain團(tuán)隊(duì)2020年推出的一種新穎的圖像識別方法,它將傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)替換為Transformer架構(gòu),實(shí)現(xiàn)了在圖像識別任務(wù)中的顯著性能提升。 本文將從以下幾個(gè)方面進(jìn)行深入

    2024年02月20日
    瀏覽(22)
  • 大模型開發(fā)(一):GPT、ChatGPT與大模型,一次搞懂這些AI概念

    大模型開發(fā)(一):GPT、ChatGPT與大模型,一次搞懂這些AI概念

    全文共5000余字,預(yù)計(jì)閱讀時(shí)間約10~20分鐘 | 滿滿干貨,建議收藏! 本文目標(biāo):詳細(xì)解釋大型語言模型(LLM)和OpenAI的GPT系列的基本概念。 大型語言模型,也稱大語言模型、大模型(Large Language Model,LLM;Large Language Models,LLMs) 。 大語言模型是一種深度學(xué)習(xí)模型,特別是屬于

    2024年02月14日
    瀏覽(18)
  • Linux平臺利用Ollama和Open WebUI部署大模型_open webui 如何添加模型(1)

    Linux平臺利用Ollama和Open WebUI部署大模型_open webui 如何添加模型(1)

    Ollama 的安裝步驟如下: 安裝 Docker : 首先,確保您的系統(tǒng)已經(jīng)安裝了 Docker。您可以按照 Docker 官方文檔提供的指南來安裝 Docker:https://docs.docker.com/get-docker/ 2. 拉取 Ollama 鏡像 : 打開終端或命令提示符,運(yùn)行以下命令來拉取 Ollama 鏡像: 這將從 Docker Hub 上下載 Ollama 的最新版

    2024年04月12日
    瀏覽(26)
  • 【推薦】Spring與Mybatis集成整合

    【推薦】Spring與Mybatis集成整合

    目錄 1.概述 2.集成 2.1代碼演示: 3.整合? 3.1概述 3.2 進(jìn)行整合分頁 接著上兩篇,我已經(jīng)寫了Mybatis動態(tài)之靈活使用,mybatis的分頁和特殊字符的使用方式接下來把它們集成起來,是如何的呢??????。 集成是指將不同的組件、系統(tǒng)或框架整合在一起,使它們能夠協(xié)同工作,共同

    2024年02月11日
    瀏覽(20)
  • 共探AI大模型時(shí)代下的挑戰(zhàn)與機(jī)遇,華為云HCDE與大模型專家面對面

    摘要: 近日,華為開發(fā)者大會2023(cloud)“開發(fā)者生態(tài)創(chuàng)新發(fā)展圓桌會議”在東莞華為溪流背坡村成功舉辦。 2023年7月8日,華為開發(fā)者大會2023(cloud)“開發(fā)者生態(tài)創(chuàng)新發(fā)展圓桌會議”在東莞華為溪流背坡村成功舉辦。以大模型為代表的的新一輪人工智能技術(shù)浪潮洶涌而來

    2024年02月13日
    瀏覽(26)
  • Spring與Mybatis集成且Aop整合

    Spring與Mybatis集成且Aop整合

    目錄 一、集成 1.1 集成的概述 1.2 集成的優(yōu)點(diǎn) 1.3 代碼示例 二、整合 2.1 整合概述 2.2 整合進(jìn)行分頁 集成是指將不同的組件、部分或系統(tǒng)組合在一起,以形成一個(gè)整體功能完整的解決方案。它是通過連接、交互和協(xié)調(diào)組件之間的關(guān)系來實(shí)現(xiàn)的。 集成可以應(yīng)用于各個(gè)領(lǐng)域,包括

    2024年02月11日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包