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

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

發(fā)布于 2025-5-7 08:11
瀏覽
0收藏

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

Langchain4J解決了哪些問題?

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

想象一下:我們想要構(gòu)建一個能回答問題、生成內(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ù)時,代碼幾乎無需重寫。?
  • 內(nèi)置工具鏈:自動管理對話歷史(實(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,自動處理將大模型集成至Java應(yīng)用程序所帶來的復(fù)雜步驟。

無需手動創(chuàng)建提示詞、處理上下文(或聊天記憶)、調(diào)整輸出格式或者管理工具及外部數(shù)據(jù)檢索,現(xiàn)在開發(fā)者只需定義一個代表所欲創(chuàng)建“服務(wù)”的常規(guī)Java接口,之后Langchain4J框架即可生成該接口的智能體實(shí)現(xiàn),自動將方法調(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方法時,此框架會自動:

  • 將輸入字符串封裝為大模型兼容格式。?
  • 附加預(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ū)動的應(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個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容錯能力: 充分利用現(xiàn)有的Lanchain4J AI服務(wù)(例如@retry, @timeout, @ratelimit,shoultback等)實(shí)現(xiàn)高容錯。?
  • Langchain4J MicroprofileTelemetry: 啟用時,開發(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)前版本(截至撰稿時為0.0.4)支持Langchain4J版本1.0.0-BETA2(截至撰稿時的最新版本)。

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。在配置這種模型時,Langchain4J隨附一個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;否則將會出錯。

構(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指定一個CDI名稱。在本示例中名為Chat-Model-Openai。這是我們在@registeraiservice上提供的同一名稱,負(fù)責(zé)告知CDI必須找到Chat-ai-openai chatlangugemodeland并在構(gòu)建Assistant AI服務(wù)時將其注冊至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并自動執(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é)省下時間與精力,專注運(yùn)用生成式AI為業(yè)務(wù)邏輯創(chuàng)造實(shí)際價值。

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

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 国产精品国产a级 | 99re6热在线精品视频播放 | 少妇久久久 | 成人黄在线观看 | 精品国产乱码久久久久久果冻传媒 | 欧美日韩电影免费观看 | 亚洲欧美日韩精品 | 欧州一区| 女同久久另类99精品国产 | 久久国产一区 | 国产精品久久久久无码av | 青草青草久热精品视频在线观看 | av中文网 | 亚洲午夜精品视频 | 午夜精品久久久久久久久久久久久 | 美女在线观看av | 中文成人无字幕乱码精品 | 色视频网站在线观看 | 中文字幕第49页 | www九色| 欧美精品久久 | av看片| 日韩精品一区二区三区免费观看 | 美国一级黄色片 | av中文网 | 人操人免费视频 | 欧美中文字幕一区二区三区亚洲 | 国产在线a| 成人国产精品色哟哟 | 精品综合网 | 国产精品久久久久久亚洲调教 | 国产成人免费视频网站高清观看视频 | 成人小视频在线免费观看 | 欧美激情a∨在线视频播放 成人免费共享视频 | 伊人伊人| 鲁一鲁资源影视 | 欧美日韩1区2区3区 欧美久久一区 | 一级看片免费视频囗交动图 | 综合一区二区三区 | 亚洲国产精品一区二区第一页 | 日本五月婷婷 |