偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

譯者 | 核子可樂(lè)

審校 | 重樓

Langchain4J解決了哪些問(wèn)題?

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

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

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

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

Langchain4J的AI服務(wù)

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

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

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

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

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

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

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

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

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

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

Langchain4J Microprofile與SmallRye-LLM

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

Langchain4J Microprofile示例

以下示例旨在展示Langchain4J MicroproFile功能集。這些示例基于一款簡(jiǎn)化的汽車預(yù)訂應(yīng)用程序,靈感來(lái)自Lize Raes在Devoxx Belgium 2023上的Java Meets AI演講,以及Jean-Fran?oisJames的相關(guān)探索。初版演示來(lái)自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ù)(請(qǐng)參見(jiàn)上面的代碼)。大家可按需做相應(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)目,確??蓪I服務(wù)注冊(cè)至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對(duì)象(大多數(shù)應(yīng)用程序會(huì)在Resources \ Meta-Inf文件夾中提供此文件)。

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

下面來(lái)看以編程方式創(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();

任何功能的配置格式所依賴的對(duì)象都應(yīng)具有Langchain4J提供的builder;否則將會(huì)出錯(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開(kāi)頭,以便CDI擴(kuò)展名能夠檢測(cè)到Langchain4J配置。

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

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

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

現(xiàn)在,我們可以輕松在企業(yè)服務(wù)中進(jìn)行@Inject。例如,對(duì)于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),請(qǐng)將以下功能添加到Microprofile-config.properties中。

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

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

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

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

總結(jié)

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

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

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

2025-03-31 00:44:00

JavaAI開(kāi)發(fā)

2025-04-22 03:00:00

模型SpringAI

2025-05-07 02:22:00

2025-05-06 08:09:50

2024-05-14 09:57:10

人工智能QuarkusLLM

2025-05-07 01:01:00

JavaQuarkusAI

2025-04-29 03:40:00

API大模型配置

2025-05-06 08:21:35

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ù)庫(kù)

2024-07-15 08:31:19

2024-07-12 14:53:42

2020-07-14 22:08:14

AI

2025-03-26 08:53:47

2023-09-20 08:00:00

大語(yǔ)言模型代碼庫(kù)

2023-05-08 12:54:54

語(yǔ)言模型LLMPython

2024-11-26 07:53:07

點(diǎn)贊
收藏

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