汽车精品设计网站建设东道设计作品

张小明 2026/1/3 0:43:51
汽车精品设计网站建设,东道设计作品,网站设计定制公司,全flash网站下载这篇文章介绍了LangChain框架及其Java实现LangChain4j#xff0c;详细探讨了其核心组件包括模型I/O、记忆内存和检索功能#xff0c;以及如何使用链和代理构建复杂应用。通过Java示例#xff0c;展示了提示模板、聊天模型、输出解析器等技术#xff0c;帮助开发者快速构建大…这篇文章介绍了LangChain框架及其Java实现LangChain4j详细探讨了其核心组件包括模型I/O、记忆内存和检索功能以及如何使用链和代理构建复杂应用。通过Java示例展示了提示模板、聊天模型、输出解析器等技术帮助开发者快速构建大语言模型应用程序。引 言在本教程中我们将会研究 LangChain 的细节这是一个利用语言模型开发应用程序的框架。首先我们会介绍有关语言模型的基本概念这将对本教程有一定的辅助作用。尽管 LangChain 主要提供了 Python 和 JavaScript/TypeScript 语言的版本但是也有在 Java 中使用 LangChain 的可选方案。我们将会讨论组成 LangChain 框架的构建基块然后在 Java 中进行实验。背 景在深入探讨为何需要一个框架来构建语言模型驱动的应用程序之前我们必须首先了解什么是语言模型除此之外我们还会介绍在使用语言模型时遇到的一些典型的复杂问题。大语言模型语言模型是自然语言的一个概率模型可以生成一系列单词的概率。大语言模型LLM是以规模庞大为特征的一种语言模型。它们是人工智能网络可能会有数十亿个参数。LLM 通常会使用自监督和半监督学习技术在大量无标记的数据上进行预训练。然后使用微调和提示工程等各种技术对预训练模型进行调整使其适用于特定的任务这些 LLM 能够执行多种自然语言处理任务如语言翻译和内容摘要。它们还能完成内容创建等生成型任务。因此它们在问题回答这样的应用中极具价值。几乎所有主流的云服务提供商都在它们的软件产品中加入了大语言模型。例如微软 Azure 提供了 Llama 2 和 OpenAI GPT-4 等 LLM。Amazon Bedrock 提供了来自 AI21 Labs、Anthropic、Cohere、Meta 和 Stability AI 的模型。提示工程LLM 是在大量文本数据集上训练的基础模型。因此它们可以捕获人类语言内在的语法和语义。但是我们必须对其进行调整以便于让其执行我们希望它们执行的特定任务。提示工程是调整 LLM 最快的方法之一。这是一个构建文本的过程文本可以被 LLM 解释和理解。在这里我们使用自然语言文本来描述希望 LLM 执行的任务我们创建的提示有助于 LLM 执行上下文内的学习这种学习是临时性的。我们可以使用提示工程来促进 LLM 的安全使用并构建新的能力比如利用领域知识和外部工具来增强 LLM。这是一个活跃的研究领域新技术层出不穷。但是像思路链chain-of-thought提示这样的技术已经非常流行。该技术的理念是让 LLM 在给出最终答案之前通过一系列的中间步骤来解决问题。词嵌入正如我们看到的LLM 能够处理大量的自然语言文本。如果我们将自然语言中的单词表示为 词嵌入word embedding那么 LLM 的性能就会大大提高。这是一种实值向量real-valued vector能够对单词的含义进行编码。通常词嵌入是通过 Tomáš Mikolov 的 Word2vec 或斯坦福大学的 GloVe 等算法生成的。GloVe 是一种无监督学习算法根据语料库中全局的单词 - 单词间共现co-occurrence统计数据进行训练在提示工程中我们将提示转换为词嵌入使模型能够更好地理解提示并做出响应。除此之外它还有助于增强我们提供给模型的上下文使它们能够提供更多符合上下文的答案。例如我们可以从现有的数据集生成词嵌入并将其存储到向量数据库中。此外我们还可以使用用户提供的输入对该向量数据库执行语义搜索。然后我们将搜索结果作为模型的附加上下文。使用 LangChain 的 LLM 技术栈正如我们已经看到的创建有效的提示是在所有应用中成功利用 LLM 的关键因素。这包括让与语言模型的交互具有上下文感知的能力并且能够依靠语言模型进行推理。为此我们需要执行多项任务包括创建提示模板、调用语言模型以及从多个数据源向语言模型提供用户特定的数据。为了简化这些任务我们需要一个像 LangChain 这样的框架将其作为 LLM 技术栈的一部分在开发需要链接多个语言模型的应用并且需要调用过去与语言模型交互生成的信息时该框架会非常有用。此外还有一些更复杂的用例涉及到将语言模型作为推理引擎。最后我们还可以执行日志记录、监控、流式处理以及其他必要的维护和故障排除任务。LLM 技术栈正在快速发展以解决其中的许多问题。不过LangChain 正在迅速成为 LLM 技术栈的重要组成部分。面向 Java 的 LangChainLangChain 在 2022 年以开源项目的形式启动并很快在社区的支持下赢得了广泛关注。它最初由 Harrison Chase 用 Python 语言开发很快就成为人工智能领域发展最快的初创公司之一。2023 年初继 Python 版本后LangChain 又推出了 JavaScript/TypeScript 版本。它很快就变得非常流行并开始支持多种 JavaScript 环境如 Node.js、Web 浏览器、CloudFlare Worker、Vercel/Next.js、Deno 和 Supabase Edge 函数。遗憾的是目前还没有适用于 Java/Spring 应用的 LangChain 官方 Java 版本。不过有一个名为LangChain4j的 LangChain Java 社区版本。它适用于 Java 8 或更高版本支持 Spring Boot 2 和 3。LangChain 的各种依赖可以从 Maven 中央仓库获取。我们可能需要在应用程序中添加一个或多个依赖项这取决于我们要使用的特性dependency groupIddev.langchain4j/groupId artifactIdlangchain4j/artifactId version0.23.0/version /dependency例如在本教程的后续章节中我们还将需要一些依赖以便于继续支持与 OpenAI 模型集成、提供嵌入式支持以及类似 all-MiniLM-L6-v2 的句子转换器sentence-transformer模型。LangChain4j 的设计目标与 LangChain 相同它提供了一个简单而一致的抽象层以及众多的实现。它已经支持多个语言模型供应商如 OpenAI和嵌入数据存储商如 Pinecone。不过由于 LangChain 和 LangChain4j 都在快速发展Python 或 JS/TS 版本支持的特性可能在 Java 版本中还不存在。不过基本概念、一般结构和词汇在很大程度上是相同的。LangChain 的构建基块LangChain 以模块组件的形式为我们提供了多个有价值的提议。模块化组件提供了有用的抽象以及一系列用于处理语言模型的实现。我们以 Java 为例讨论其中的一些模块。模型 I/O在使用任何语言模型时我们都需要与之进行交互的能力。LangChain 提供了必要的构建基块比如模板化提示以及动态选择和管理模型输入的能力。同时我们还可以使用输出解析器从模型输出中提取信息提示模板是为语言模型生成提示的预定义配方可能包括说明、few-shot 样例和特定的上下文PromptTemplate promptTemplate PromptTemplate .from(Tell me a {{adjective}} joke about {{content}}..); MapString, Object variables new HashMap(); variables.put(adjective, funny); variables.put(content, computers); Prompt prompt promptTemplate.apply(variables);在这里我们创建了一个可以接受多个变量的提示模板。这些变量是我们从用户输入中接收到的并输入到提示模板中。LangChain 支持与两种模型集成即语言模型和聊天模型。聊天模型也由语言模型支持但提供聊天的能力ChatLanguageModel model OpenAiChatModel.builder() .apiKey(OPENAI_API_KEY) .modelName(GPT_3_5_TURBO) .temperature(0.3) .build(); String response model.generate(prompt.text());在这里使用特定的 OpenAI 模型和相关的 API 秘钥创建了一个聊天模型。我们可以通过免费注册从 OpenAI 获取 API 秘钥。参数 temperature 用来控制模型输出的随机性。最后语言模型的输出可能不够结构化不足以进行展示。LangChain 提供的输出解析器可以帮助我们对语言模型的响应进行结构化处理例如以 Java 的 POJO 的形式从输出中提取信息。记忆内存通常利用 LLM 的应用程序都会有一个对话界面。所有对话的一个重要方面就是要能够参考对话早期引入的信息。存储过去交互信息的能力被称为记忆内存memoryLangChain 提供了为应用程序添加记忆内存的关键功能。我们需要从记忆内存中读取信息的能力以增强用户的输入。然后我们需要将当前运行的输入和输出写入记忆内存的能力ChatMemory chatMemory TokenWindowChatMemory .withMaxTokens(300, new OpenAiTokenizer(GPT_3_5_TURBO)); chatMemory.add(userMessage(Hello, my name is Kumar)); AiMessage answer model.generate(chatMemory.messages()).content(); System.out.println(answer.text()); // Hello Kumar! How can I assist you today? chatMemory.add(answer); chatMemory.add(userMessage(What is my name?)); AiMessage answerWithName model.generate(chatMemory.messages()).content(); System.out.println(answer.text()); // Your name is Kumar. chatMemory.add(answerWithName);在这里我们使用TokenWindowChatMemory实现了一个固定窗口的聊天内存它允许我们读写与语言模型交换的聊天信息。LangChain 还提供了更复杂的数据结构和算法以便于从记忆内存中返回选定的信息而不是所有的信息。例如它支持返回过去几条信息的摘要或者只返回与当前运行相关的信息。检索大语言模型通常是在大量的文本语料库中训练出来的。因此它们在一般任务中相当高效但是在特定领域任务中可能就没有那么有用了。因此我们需要检索相关的外部数据并在生成步骤将其传递给语言模型。这个过程被称为“检索增强生成Retrieval Augmented GenerationRAG”。它有助于将模型建立在相关的准确信息之上并让我们深入了解模型的生成过程。LangChain 为创建 RAG 应用程序提供了必要的构建基块首先LangChain 提供了文档加载器用于从存储位置检索文档。其次还提供了用于准备文档的转换器transformer以便于进一步的处理。例如我们可以让它将大文档拆分为小块Document document FileSystemDocumentLoader.loadDocument(simpsons_adventures.txt); DocumentSplitter splitter DocumentSplitters.recursive(100, 0, new OpenAiTokenizer(GPT_3_5_TURBO)); ListTextSegment segments splitter.split(document);在这里我们使用FileSystemDocumentLoader从文件系统加载文档。然后使用OpenAiTokenizer将文档拆分为小块。为了提高检索效率通常会将文档转换为嵌入内容并将其存储在向量数据库中。LangChain 支持多种嵌入式提供商和方法并且能够与几乎所有的向量存储集成EmbeddingModel embeddingModel new AllMiniLmL6V2EmbeddingModel(); ListEmbedding embeddings embeddingModel.embedAll(segments).content(); EmbeddingStoreTextSegment embeddingStore new InMemoryEmbeddingStore(); embeddingStore.addAll(embeddings, segments);在这里我们使AllMiniLmL6V2EmbeddingModel创建文档片段的嵌入内容。然后我们将嵌入内容存储在基于内存的向量存储中。现在我们已经将外部数据以嵌入的形式保存在向量存储中了并且做好准备进行检索了。LangChain 支持多种检索算法如简单的语义搜索以及复杂的复合检索String question Who is Simpson?; //The assumption here is that the answer to this question is contained in the document we processed earlier. Embedding questionEmbedding embeddingModel.embed(question).content(); int maxResults 3; double minScore 0.7; ListEmbeddingMatchTextSegment relevantEmbeddings embeddingStore .findRelevant(questionEmbedding, maxResults, minScore);我们创建了用户问题的嵌入然后使用问题嵌入从向量存储中检索相关的匹配项。现在我们可以将检索到的匹配项作为上下文进行发送将其添加到我们想要发送给模型的提示中。LangChain 的复杂应用到目前为止我们已经了解了如何使用单个组件创建基于语言模型的应用程序。LangChain 还提供了用于创建更复杂应用的组件。例如我们可以使用链和代理来构建功能更强的自适应应用。链一般来讲应用程序需要按照特定顺序调用多个组件。这就是 LangChain 中所说的链chain。它简化了复杂应用程序的开发过程使得调试、维护和改进都变得更加容易。它对于组合多个链以形成更复杂的应用程序也很有用因为这些应用可能需要与多个语言模型交互。LangChain 提供了创建此类链的便捷方法并提供了很多预构建的链ConversationalRetrievalChain chain ConversationalRetrievalChain.builder() .chatLanguageModel(chatModel) .retriever(EmbeddingStoreRetriever.from(embeddingStore, embeddingModel)) .chatMemory(MessageWindowChatMemory.withMaxMessages(10)) .promptTemplate(PromptTemplate .from(Answer the following question to the best of your ability: {{question}}\n\nBase your answer on the following information:\n{{information}})) .build();在这里我们使用了一个预构建的链ConversationalRetreivalChain它允许我们使用聊天模型、检索器、记忆内存和提示模板。现在我们只需要使用该链就可以执行用户查询String answer chain.execute(Who is Simpson?);链自带默认的记忆内存和提示模板。创建自定义链也很容易。创建链的功能使得复杂应用程序的模块化实现变得更加容易。代理LangChain 还提供了更强大的结构如代理agent。与链不同的是代理使用语言模型作为推理引擎来决定采取哪些行动以及行动的顺序。我们还可以让代理访问恰当的工具以执行必要的行为。在 LangChain4j 中代理是作为 AI 服务的形式来使用的可以用来声明式地定义复杂的行为。我们看一下是否能够以工具的形式为 AI 服务提供一个计算器并使语言模型能够执行运算。首先我们定义一个具有基本计算器功能的类并使用自然语言描述每个功能以便于模型理解public class AIServiceWithCalculator { static class Calculator { Tool(Calculates the length of a string) int stringLength(String s) { return s.length(); } Tool(Calculates the sum of two numbers) int add(int a, int b) { return a b; } }然后我们定义 AI 服务的接口并以此为基础进行构建。这个接口非常简单但是它也能描述更复杂的行为interface Assistant { String chat(String userMessage); }现在我们使用刚刚定义的接口和创建的工具通过 LangChain4j 提供的构建器工厂创建一个 AI 服务Assistant assistant AiServices.builder(Assistant.class) .chatLanguageModel(OpenAiChatModel.withApiKey(OPENAI_API_KEY)) .tools(new Calculator()) .chatMemory(MessageWindowChatMemory.withMaxMessages(10)) .build();就是这么简单现在我们可以开始向语言模型发送一些包含计算的问题了String question What is the sum of the numbers of letters in the words \language\ and \model\?; String answer assistant.chat(question); System.out.prtintln(answer); // The sum of the numbers of letters in the words language and model is 13.运行这段代码后我们会发现语言模型现在可以执行计算了。需要注意的是语言模型在执行一些需要它们具有时间和空间的概念或执行复杂运算程序的任务时会遇到困难。不过我们可以随时通过为模型补充必要的工具来解决这个问题。结 论在本教程中我们介绍了利用大语言模型创建应用程序的一些基本元素。此外我们还讨论了将 LangChain 这样的框架作为开发此类应用程序的技术栈的一部分的价值。基于此我们探索了 LangChain4j 的一些核心要素LangChain4j 是 LangChain 的 Java 版本。这些库会在未来迅速发展。但是它们也已让开发由语言模型驱动的应用程序的过程变得更加成熟而有趣如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型入门到实战全套学习大礼包1、大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通2、大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。3、AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。4、大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。5、大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。适用人群第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

中国建设银行肃宁支行网站国家建设规范网站

EmotiVoice语音合成情感渐变功能:从平静到激动平滑过渡 在虚拟主播声情并茂地讲述故事、游戏角色因剧情转折突然爆发怒吼的那一刻,你是否曾好奇——这些声音是如何生成的?它们为何听起来如此真实而富有感染力?随着AI语音技术的发展…

张小明 2026/1/1 16:06:18 网站建设

手机网站seo优化个人社保缴费多少钱一个月

深入理解ESP32-S3的Flash分区:从esptool操作到实战配置你有没有遇到过这样的情况?固件烧进去后,设备上电却卡在启动日志里,只打印出一串乱码或“Invalid partition table”;OTA升级失败,系统反复重启进不了…

张小明 2026/1/1 14:25:17 网站建设

海东企业网站建设公司腾讯与中国联通

前景 很多人不知道网络安全发展前景好吗?学习网络安全能做什么?今天为大家解答下 先说结论:网络安全的前景必然是超级好的 作为一个有丰富Web安全攻防、渗透领域老工程师,之前也写了不少网络安全技术相关的文章,不少…

张小明 2026/1/1 19:45:53 网站建设

网站开发就业薪酬wordpress 建站模板

文章详细拆解了AI智能体系统的七层架构:大模型层作为智能底座,AI框架层(LangChain/LangGraph/MCP)管理智能体逻辑,工具层实现动手能力,知识库层提供长期记忆,AI IDE层作为开发调度台。强调智能体系统不是简单接入大模型…

张小明 2026/1/1 16:46:17 网站建设

做网站找谁wordpress付费服务器

GitHub 主页 关于Hyperlane框架 Hyperlane 是一个轻量级、高性能、跨平台的 Rust HTTP 服务器框架,构建于 Tokio 异步运行时之上。 核心特性 性能表现:Keep-Alive开启324,323 QPS,关闭51,031 QPS | 统一API:HTTP、WebSocket、…

张小明 2025/12/29 0:46:57 网站建设

购物网站 开发网站建设 站内搜索

异步编程是C#开发中提升程序吞吐量的核心手段,而async/await作为异步编程的“语法糖”,极大简化了异步代码的编写逻辑。但多数开发者仅停留在“会用”层面,对其底层执行原理、状态机的工作机制一知半解。本文将从业务代码执行流程到状态机底层…

张小明 2026/1/2 13:27:13 网站建设