成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SmallRye大模型簡介:使用Langchain4J輕松向應(yīng)用內(nèi)引入AI服務(wù)

譯文 精選
人工智能
?對于打算用Java構(gòu)建AI智能體或者對接各類大語言模型(LLM)的開發(fā)者,一定不會對Langchain4J感到陌生。

譯者 | 核子可樂

審校 | 重樓

Langchain4J解決了哪些問題?

Langchain4J 本質(zhì)上是為 Java 開發(fā)者打造的工具箱,旨在簡化向高級語言中集成 AI 功能(如聊天機(jī)器人或文本生成器)的過程,同時(shí)屏蔽底層復(fù)雜細(xì)節(jié)。

想象一下:我們想要構(gòu)建一個(gè)能回答問題、生成內(nèi)容或模擬人類對話的智能應(yīng)用。通常,與 AI 模型(如 ChatGPT 等)交互需要學(xué)習(xí)不同接口并處理大量技術(shù)細(xì)節(jié)。Langchain4J 通過提供現(xiàn)成的工具集和統(tǒng)一 API(支持多 AI 服務(wù)商),徹底簡化了這一過程。

核心優(yōu)勢一覽:

  • 統(tǒng)一接口:無需學(xué)習(xí)各 AI 服務(wù)商的獨(dú)特接口,Langchain4J 提供標(biāo)準(zhǔn)化交互方式。切換 AI 服務(wù)時(shí),代碼幾乎無需重寫。
  • 內(nèi)置工具鏈:自動(dòng)管理對話歷史(實(shí)現(xiàn)上下文記憶)、優(yōu)化提示詞格式、簡化外部數(shù)據(jù)檢索與存儲。
  • 無縫集成:作為適配器將現(xiàn)代 AI 模型能力注入 Java 應(yīng)用,開發(fā)者無需關(guān)注底層實(shí)現(xiàn)。
  • 即用型示例:提供客服聊天機(jī)器人、教育工具、智能搜索引擎等場景的快速實(shí)現(xiàn)模板。

Langchain4J的AI服務(wù)

Langchain4J 推出的AI服務(wù)通過高級API,自動(dòng)處理將大模型集成至Java應(yīng)用程序所帶來的復(fù)雜步驟。

無需手動(dòng)創(chuàng)建提示詞、處理上下文(或聊天記憶)、調(diào)整輸出格式或者管理工具及外部數(shù)據(jù)檢索,現(xiàn)在開發(fā)者只需定義一個(gè)代表所欲創(chuàng)建“服務(wù)”的常規(guī)Java接口,之后Langchain4J框架即可生成該接口的智能體實(shí)現(xiàn),自動(dòng)將方法調(diào)用轉(zhuǎn)換為與大模型通信所對應(yīng)的底層操作。

現(xiàn)在,我們可以將接口簡化為如下形式:

interface Assistant {
 @UserMessage("Answer this question: {{it}}")
 String chat(String userMessage);
}

通過調(diào)用來自AI Services的構(gòu)建器方法,你將收到實(shí)現(xiàn)此接口的對象。在調(diào)用chat方法時(shí),此框架會自動(dòng):

  • 將輸入字符串封裝為大模型兼容格式。
  • 附加預(yù)設(shè)的系統(tǒng)指令(通過@SystemMessage注解)。
  • 按需追加對話歷史(需配置聊天記憶)。
  • 將組合后的提示詞發(fā)送至大模型。
  • 解析響應(yīng)并轉(zhuǎn)換為 Java 類型(如示例中的 String)。

企業(yè)級Java環(huán)境中的Langchain4J

對于企業(yè)Java開發(fā)人員來說,創(chuàng)建模塊化和松散耦合的應(yīng)用程序以及使用組件框架來注入基于業(yè)務(wù)需求的接口的基本思路,已經(jīng)讓Java能夠編寫出非常優(yōu)雅的企業(yè)級應(yīng)用程序。不少企業(yè)級Java框架都集成了Langchain4J,可以用最少的配置和樣板代碼來構(gòu)建AI驅(qū)動(dòng)的應(yīng)用程序(如聊天機(jī)器人和內(nèi)容摘要器)。

  • Langchain4J Spring: 將Langchain4J框架與Spring生態(tài)相集成,多為Spring Boot。
  • Quarkus Langchain4J: 將Langchain4J與Quarkus框架相集成。

上述框架通過抽象大模型交互的復(fù)雜性來利用各自的框架功能和優(yōu)勢,確保開發(fā)人員編寫出健壯、干凈且模塊化的AI服務(wù)。

Langchain4J Microprofile與SmallRye-LLM

Langchain4J Microprofile (現(xiàn)名為SmallRye LLM,屬于Eclipse Microprofile項(xiàng)目) 是一套輕巧的Java庫,能夠?qū)angchain4J的AI服務(wù)功能引入Jakarta EE、Microprofile與Quarkarkus生態(tài),運(yùn)用大家熟悉的依賴項(xiàng)注入(CDI)配合MicroProfile Config及其他MicroProfile標(biāo)準(zhǔn)完成配置。

Langchain4J Microprofile的核心功能包括:

  • 以CDI為核心構(gòu)建而成。通過在Lanchain4J AI服務(wù)界面上添加@registeraiservice注釋,AI服務(wù)智能體成為CDI可發(fā)現(xiàn)的bean以供注入。提供2個(gè)CDI服務(wù)擴(kuò)展名,開發(fā)者可借此實(shí)現(xiàn)AI服務(wù)CDI的可發(fā)現(xiàn)性:CDI Portable Extension或CDI Build Compatible Extension(在CDI 4.0及更高版本中引入)。
  • Langchain4J Microprofile配置: 開發(fā)人員可以從Microprofile Config功能中受益,構(gòu)建Langchain4J的基本元素,例如Chatlangugemodel,ChatMessage,ChatMessage,ChatMemory,Chatmemory,ContentReTriever,ToolProvider,ToolProvider,ToolProvider(模型上下文協(xié)議,簡稱MCP),無需單獨(dú)編寫builder工具。
  • Langchain4J Microprofile容錯(cuò)能力: 充分利用現(xiàn)有的Lanchain4J AI服務(wù)(例如@retry, @timeout, @ratelimit,shoultback等)實(shí)現(xiàn)高容錯(cuò)。
  • Langchain4J MicroprofileTelemetry: 啟用時(shí),開發(fā)人員可以通過開放Telemetry觀察其大模型指標(biāo)(遵循GenAI Metrics的語義慣例)。

Langchain4J Microprofile示例

以下示例旨在展示Langchain4J MicroproFile功能集。這些示例基于一款簡化的汽車預(yù)訂應(yīng)用程序,靈感來自Lize Raes在Devoxx Belgium 2023上的Java Meets AI演講,以及Jean-Fran?oisJames的相關(guān)探索。初版演示來自Dmytro Liubarskyi。

這款示例程序運(yùn)行在以下環(huán)境之上:

  • GlassFish
  • Payara
  • Helidon (搭配CDI Build Compatible Extension與CDI Portable Extension)
  • Open Liberty
  • Wildfly
  • Quarkus

親手構(gòu)建Langchain4J AI服務(wù)

在此示例中,我們將使用Langchain4J MicroproFile構(gòu)建自己的Assistant AI服務(wù)(請參見上面的代碼)。大家可按需做相應(yīng)調(diào)整。

當(dāng)前版本(截至撰稿時(shí)為0.0.4)支持Langchain4J版本1.0.0-BETA2(截至撰稿時(shí)的最新版本)。

1. 將SmallRye-LLM Portable Extension導(dǎo)入你的項(xiàng)目,確保可將AI服務(wù)注冊至CDI注入。

<dependency>
 <groupId>io.smallrye.llm</groupId>
 <artifactId>smallrye-llm-langchain4j-portable-extension</artifactId>
 <version>0.0.4</version>
 </dependency>

2. 導(dǎo)入SmallRye-LLM Microprofile Config,這樣我們即可使用Microprofile Config規(guī)范創(chuàng)建Langchain4J功能:

<dependency>
 <groupId>io.smallrye.llm</groupId>
 <artifactId>smallrye-llm-langchain4j-config-mpconfig</artifactId>
 <version>0.0.4</version>
 </dependency>

3. 使用@registeraiservice注釋langchain4J AI服務(wù),并為chatlanguagemodel設(shè)定名稱(此名稱將供CDI容器使用,稍后將詳細(xì)介紹)。

@RegisterAIService(chatLanguageModelName = "chat-model-openai")
 interface Assistant {
 @UserMessage("Answer this question: {{it}}")
 String chat(String userMessage);
 }

在MicroproFile-config.properties中配置ChatLanguageModel對象(大多數(shù)應(yīng)用程序會在Resources \ Meta-Inf文件夾中提供此文件)。

在此示例中,我們將使用AzureopenaIchatModel。在配置這種模型時(shí),Langchain4J隨附一個(gè)builder,該builder允許你構(gòu)建ChatLanguageModel的參考,具體視選擇的大模型而定。

下面來看以編程方式創(chuàng)建ChatLanguageModel(在本示例中使用Olllama)的一種典型方法:

private static final String MODEL = "mistral";
 private static final String BASE_URL = "http://localhost:11434";

 ChatLanguageModel model = OllamaChatModel.builder()
  .baseUrl(BASE_URL)
  .modelName(MODEL)
  .temperature(0.2)
  .timeout(timeout)
  .build();

任何功能的配置格式所依賴的對象都應(yīng)具有Langchain4J提供的builder;否則將會出錯(cuò)。

構(gòu)建該功能的配置格式如下:

smallrye.llm.plugin.<cdi-model-name>.config.<builder-property-method-name>=<value>

例如,要由CDI內(nèi)部使用其builder創(chuàng)建AzureopenaIchatModel,我們將其如下配置:

smallrye.llm.plugin.chat-model-openai.class=dev.langchain4j.model.azure.AzureOpenAiChatModel
 smallrye.llm.plugin.chat-model-openai.config.api-key=${azure.openai.api.key}
 smallrye.llm.plugin.chat-model-openai.config.endpoint=${azure.openai.endpoint}
 smallrye.llm.plugin.chat-model-openai.config.service-version=2024-02-15-preview
 smallrye.llm.plugin.chat-model-openai.config.deployment-name=${azure.openai.deployment.name}
 smallrye.llm.plugin.chat-model-openai.config.temperature=0.1
 smallrye.llm.plugin.chat-model-openai.config.topP=0.1
 smallrye.llm.plugin.chat-model-openai.config.timeout=PT120S
 smallrye.llm.plugin.chat-model-openai.config.max-retries=2
 smallrye.llm.plugin.chat-model-openai.config.logRequestsAndResponses=true

配置必須以SmallRye.llm.plugin開頭,以便CDI擴(kuò)展名能夠檢測到Langchain4J配置。

接下來,我們?yōu)閏hatlanguagemodel指定一個(gè)CDI名稱。在本示例中名為Chat-Model-Openai。這是我們在@registeraiservice上提供的同一名稱,負(fù)責(zé)告知CDI必須找到Chat-ai-openai chatlangugemodeland并在構(gòu)建Assistant AI服務(wù)時(shí)將其注冊至Langchain4j。

Builder-Property-hethod-name具有名稱敏感性,必須與Builder.<builder-property-method-name>(<value>)上的名稱保持一致。

默認(rèn)情況下,除非另有說明,否則所有用Microprofile配置的對象均為@ApplicationsCop。

現(xiàn)在,我們可以輕松在企業(yè)服務(wù)中進(jìn)行@Inject。例如,對于ChatResource Restful服務(wù)(使用Jakarta Restful Web Service),我們可以將其作為常規(guī)Jakarta EE CDI服務(wù)注入至Assistant:

@Path("/chat")
 public class ChatResource {

  @Inject
  private Assistant assistant;

  @GET
  @Operation(summary = "Chat to our friendly assistant.")
  @Produces(MediaType.TEXT_PLAIN)
  public String chat(@QueryParam("message") String message) {
 return assistant.chat(message);
 }
 }

其他功能:如果大家想使用Microprofile Telemetry(運(yùn)行Open Telemetry)探索大模型指標(biāo),請將以下功能添加到Microprofile-config.properties中。

此示例使得CDI能夠發(fā)現(xiàn)所有Chatmodellistener并自動(dòng)執(zhí)行注入:

smallrye.llm.plugin.chat-model.config.listeners=@all

或者,我們也可以通過以下方式引入特定Chatmodellistener:

smallrye.llm.plugin.chat-model.config.listeners=io.smallrye.llm.langchain4j.telemetry.SpanChatModelListener,io.smallrye.llm.langchain4j.telemetry.MetricsChatModelListener

總結(jié)

SmallRye LLM簡化了將Langchain4J AI服務(wù)功能集成至Microprofile應(yīng)用程序中的過程。憑借與Microprofile及統(tǒng)一API的緊密集成,SmallRye LLM對于Jakarta EE與Microprofile開發(fā)者極具吸引力,可幫助他們在回避復(fù)雜性與大量樣板的情況下添加AI功能。如此一來,你可以節(jié)省下時(shí)間與精力,專注運(yùn)用生成式AI為業(yè)務(wù)邏輯創(chuàng)造實(shí)際價(jià)值。

原文標(biāo)題:Introducing SmallRye LLM: Injecting Langchain4J AI Services,作者:BUHAKE SINDI

責(zé)任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2025-03-31 00:44:00

JavaAI開發(fā)

2025-04-22 03:00:00

模型SpringAI

2025-05-06 08:09:50

2025-05-07 02:22:00

2024-05-14 09:57:10

人工智能QuarkusLLM

2025-05-07 01:01:00

JavaQuarkusAI

2025-05-06 08:21:35

2025-04-29 03:40:00

API大模型配置

2025-05-12 08:00:55

2025-05-09 10:31:04

2025-06-10 04:00:00

RAGRRFReranker

2025-05-26 03:15:00

SVMEmbedding數(shù)據(jù)庫

2024-07-15 08:31:19

2024-07-12 14:53:42

2023-05-08 12:54:54

語言模型LLMPython

2020-07-14 22:08:14

AI

2025-03-26 08:53:47

2023-09-20 08:00:00

大語言模型代碼庫

2024-11-26 07:53:07

2024-12-03 09:11:45

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩毛片网 | 午夜影院在线观看视频 | 亚洲男人网 | 日韩在线观看 | 91网站在线播放 | 国产精品日韩欧美 | 欧洲精品在线观看 | 狠狠亚洲| 91动漫在线观看 | 在线观看精品 | 亚洲欧美一区二区三区在线 | 亚洲精品国产综合区久久久久久久 | 日日夜夜精品视频 | 特一级毛片 | 成人午夜激情 | 中文字幕第100页 | 欧美亚洲国产日韩 | 天天操天天干天天曰 | 国产成人综合在线 | 伊人精品| 久热免费在线 | 午夜精品一区二区三区免费视频 | 亚洲情侣视频 | 我要看黄色录像一级片 | 日韩亚洲视频 | 亚洲一区亚洲二区 | va精品| 一本大道久久a久久精二百 欧洲一区二区三区 | 日韩成人在线一区 | 亚洲欧美视频一区二区 | 欧洲一级视频 | 日韩精品视频在线观看一区二区三区 | 免费性视频 | 国产精品99久久久久久动医院 | 性一交一乱一伦视频免费观看 | 日本一区高清 | 91麻豆蜜桃一区二区三区 | 亚洲精品一区二区三区中文字幕 | 欧美一级全黄 | 91在线观看| 国产ts人妖系列高潮 |