赞
踩
在数字化转型的浪潮中,人工智能(AI)正逐渐成为推动企业创新和增长的关键力量。然而,将AI技术融入到日常业务流程并非易事,它需要跨越技术门槛,解决兼容性问题,并确保数据安全。今天,我们将带您了解一个革命性的AI集成框架——LangChain4j,它为Java开发者提供了一条通往智能化未来的捷径。
LangChain4j不仅仅是一个工具,它代表了一种全新的工作方式,一种将复杂AI技术变得触手可及的理念。通过这篇文章,我们将探索LangChain4j如何帮助企业解锁智能化潜能,优化业务流程,并在竞争激烈的市场中保持领先。
无论您是技术领域的探索者还是企业的决策者,LangChain4j的故事都不容错过。让我们一起启程,深入了解这个能够编织智慧链条、引领创新潮流的AI框架。
Java版本的LangChain,随着大模型的不断发展,如何在程序中更好的利用大模型的能力来提高编程效率是一种趋势,LangChain是这么自己介绍自己的:
LangChain gives developers a framework to construct LLM‑powered apps easily.
意思是:LangChain提供了一个开发框架,使得开发者可以很容易的用来构建具有LLM能力的应用程序。
LLM就是Large Language Model,也就是常说的大语言模型,简称大模型。
个人认为:大模型时代,如何将大模型能力和传统应用相结合,使得传统应用更加智能,是人工智能时代的趋势。以前一个应用要获得智能,需要企业自己投入资源训练模型,而现在只需要接入大模型即可,这种便利性将使得大模型会应用得更为广泛,而如何将大模型能力和Java编程语言相结合,这就是LangChain4j所做的。
注意,大模型的能力远远不止聊天的能力,而LangChain4j就在帮助我们更好的利用大模型的能力,从而帮我们打造出更加智能的应用。
LangChain4j 的使用场景广泛,覆盖了从基础的聊天机器人、问答系统到复杂的文档检索、知识管理、自动化工作流以及行业特定的AI解决方案等多个领域。以下是几个具体的使用场景:
新建一个Maven工程,然后引入langchain4j的核心依赖、langchain4j集成OpenAi各个模型的依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.29.1</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>${langchain4j.version}</version>
</dependency>
程序的首次运行输出,标志着我们与这门新知识的初次“问候”,也象征着大模型学习之旅的起点
package org.example; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; /** * Despriction * * @author 程序员小胖 * @version v1.1 * @since 2024/5/8 15:07 */ public class HelloWorld { public static void main(String[] args) { ChatLanguageModel model = OpenAiChatModel.withApiKey("demo"); String answer = model.generate("hello world! "); System.out.println(answer); } }
运行代码结果为:
Hello there! How can I assist you today?
这样,我们使用LangChain4j第一次成功的和OpenAi的GPT模型进行了对话,正常来说,调用OpenAi的API接口需要在OpenAi的官网去申请ApiKey才能调用成功,而我这里传入的ApiKey为"demo"却也能调通,查看源码得知这是因为demo是openai为我们提供的测试的apiKey
在底层在构造OpenAiChatModel时,会判断传入的ApiKey是否等于"demo",如果等于会将OpenAi的原始API地址"https://api.openai.com/v1"改为"http://langchain4j.dev/demo/openai/v1",这个地址是langchain4j专门为我们准备的一个体验地址,实际上这个地址相当于是"https://api.openai.com/v1"的代理,我们请求代理时,代理会去调用真正的OpenAi接口,只不过代理会将自己的ApiKey传过去,从而拿到结果返回给我们。所以,真正开发时,需要大家设置自己的apiKey或baseUrl,可以这么设置:
ChatLanguageModel model = OpenAiChatModel.builder()
.baseUrl("http://langchain4j.dev/demo/openai/v1")
.apiKey("demo")
.build();
我们通过ChatLanguageModel的generate()方法向大模型提出问题:
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.withApiKey("demo");
String answer = model.generate("你好,你是谁?");
System.out.println(answer);
System.out.println(model.generate("请重复"));
}
运行代码结果为:
你好!我是一个人工智能助手,可以回答你的问题和提供帮助。有什么可以帮到你的吗?
请重复
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.withApiKey("demo");
String answer = model.generate("你好,我是程序员小胖");
System.out.println(answer);
System.out.println(model.generate("我叫什么名字?"));
}
运行代码结果为:
你好,程序员小胖!有什么问题或者需要帮助的吗?
您叫什么名字?
一样的情况,因为第二次调用generate()方法是一次单独的会话,那么如何做到使得两次或多次generate()在同一个会话中呢?在LangChain4j中有一个ChatMemory组件,它就是专门用来实现会话功能的,但是它需要结合LangChain4j中的AiService来使用,我们后面再介绍,现在我们先使用笨办法来解决多轮对话的问题。在ChatLanguageModel中有多个generate()重载方法:
我们前面使用的就是第一个generate()方法,而第二个和第三个generate()方法都是接收一个ChatMessage集合,并且返回一个AiMessage,那么ChatMessage和AiMessage分别都表示什么意思呢?
ChatMessage是一个接口,表示聊天消息,它有以下四种实现:
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.withApiKey("demo");
UserMessage userMessage1 = UserMessage.userMessage("你好,我是程序员小胖!");
Response<AiMessage> response1 = model.generate(userMessage1);
AiMessage aiMessage1 = response1.content();
System.out.println(aiMessage1.text());
Response<AiMessage> response2 = model.generate(userMessage1, aiMessage1, UserMessage.userMessage("我叫什么"));
AiMessage aiMessage2 = response2.content();
System.out.println(aiMessage2.text());
}
运行代码结果为:
你好,小胖!有什么可以帮助你的吗?
你告诉我你叫小胖。
当我们通过ChatLanguageModel的generate()方法向大模型提问时,ChatLanguageModel一次性给了整段响应结果,而不是一个字一个字打字机式的回答,不过我们可以使用OpenAiStreamingChatModel来实现打字机效果.
public static void main(String[] args) { StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder() .baseUrl("http://langchain4j.dev/demo/openai/v1") .apiKey("demo") .build(); model.generate("你好,你是谁?", new StreamingResponseHandler<AiMessage>() { @Override public void onNext(String token) { System.out.println(token); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { throw new RuntimeException(e); } } @Override public void onError(Throwable error) { System.out.println(error); } }); }
在探索LangChain4j的旅程中,我们不仅揭开了AI实践的神秘面纱,还发现了如何将这些强大的技术应用到实际业务中。随着智能化时代的大门缓缓开启,让我们携手LangChain4j,共同迈向一个更智能、更高效的未来。
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。