从零开发短视频电商 Java开发者的AI大模型(LLM)应用开发和设计-LangChain4j

这篇具有很好参考价值的文章主要介绍了从零开发短视频电商 Java开发者的AI大模型(LLM)应用开发和设计-LangChain4j。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Github:

  • https://github.com/langchain4j

  • https://github.com/langchain4j/langchain4j

  • https://github.com/langchain4j/langchain4j-embeddings

  • https://github.com/langchain4j/langchain4j-examples

Java版langchain, 利用LLMs的力量增强你的java应用程序。

该项目的目标是简化 AI/LLM 功能到 Java 应用程序的集成。

可以通过以下方式实现:

  • 一个简单且连贯的抽象层,旨在确保您的代码不依赖于具体实现,例如 LLM providers, embedding store providers,等。这允许轻松替换组件。
  • 上述抽象的多种实现,为您提供了多种 LLMs 和嵌入存储可供选择。
  • LLM 之上的一系列热门功能,例如:
    • 获取您自己的数据 own data(文档、代码库等)的能力,允许LLM 根据您的数据采取行动和做出响应。
    • 用于将任务(动态定义)委托给LLM的自主代理 agents ,LLM将努力完成这些任务。
    • 提示模板 Prompt templates 可帮助您获得最高质量的 LLM 回复。
    • 记忆MemoryLLM提供您当前和过去对话的背景信息。
    • 用于接收来自 LLM 的响应的结构化输出,具有所需的结构(如 Java POJO)。
    • AI 服务”,用于在简单的 API 背后声明性地定义复杂的 AI 行为。
    • 减少常见用例中对大量样板代码的需求的链 Chains
    • 自动调节以确保LLM的所有输入和输出都不会有害。

这个更像是一个大的框架,给你从头到尾梳理了个标准的流程,我认为是一个很大的解决方案

Spring Boot 3 的支持

兼容性:Java8 或更高, Spring Boot: 2 or 3

示例

1.添加依赖

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>0.24.0</version>
</dependency>

2.设置OpenAI API 密钥

String apiKey = System.getenv("OPENAI_API_KEY");

可以用自己的秘钥,不过要收费。

OpenAI(付费)或 HuggingFace(免费)

建议使用 OpenAI LLM(gpt-3.5-turbogpt-4),因为它们是迄今为止最有能力且价格合理的。

也可以使用免费提供的 API 密钥demo来测试 OpenAI。

String apiKey = "demo"

3.创建模型的实例并开始交互

OpenAiChatModel model = OpenAiChatModel.withApiKey(apiKey);

String answer = model.generate("Hello world!");

System.out.println(answer); // Hello! How can I assist you today?

功能

AI服务

  • 简单模式
  • 带有记忆功能
  • 带有工具支持
  • 带有流式处理
  • 带有检索器
  • 带有自动审核
  • 带有结构化输出、结构化提示等功能

与OpenAI和Azure OpenAI集成的功能

  • 聊天(同步 + 流式 + 函数)
  • 完成(同步 + 流式)
  • 嵌入

与Google Vertex AI集成的功能

  • 聊天
  • 完成
  • 嵌入

与HuggingFace Inference API集成的功能

  • 聊天
  • 完成
  • 嵌入

与LocalAI集成的功能

  • 聊天(同步 + 流式 + 函数)
  • 完成(同步 + 流式)
  • 嵌入

与DashScope集成的功能

  • 聊天(同步 + 流式)
  • 完成(同步 + 流式)
  • 嵌入

聊天记忆
持久性聊天记忆
与文档进行聊天
与Astra DB和Cassandra集成
与Chroma集成
与Elasticsearch集成
与Milvus集成
与Pinecone集成
与Redis集成
与Vespa集成
与Weaviate集成
内存嵌入存储(可持久化)
结构化输出
提示模板
结构化提示模板
LLM响应的流式传输
从文件系统和通过URL加载txt、html、pdf、doc、xls和ppt文档
将文档拆分为段落

  • 按段落、行、句子、单词等:

  • 递归

  • 带有重叠

标记计数估算(以便您可以预测您将支付多少)

实践

爬取网页并embedding

// 从url拉取html
// loaders 有from WebUrl,s3,file
Document document = UrlDocumentLoader.load("https://www.baidu.com", DocumentType.HTML);
// 通过 css选择器 抽取内容和标题
Map<String, String> metadataCssSelectors = new HashMap<>();
metadataCssSelectors.put("title", ".title");
HtmlTextExtractor transformer = new HtmlTextExtractor("#content", metadataCssSelectors, false);
Document transformedDocument = transformer.transform(document);
// 
String title = transformedDocument.metadata("title");
log.debug("title: {}", title);
// splitter 文档拆分为段
// 按段,特殊字符,句子,定长
DocumentSplitter splitter = new DocumentBySentenceSplitter(500, 0);
List<TextSegment> segments = splitter.split(transformedDocument);
 // embedding
for (TextSegment segment : segments) {
     String text = segment.text();
    // embedding
     Float[] xxx = textEmbeddingService.embed(text, ModelTypeEnum.BERT_EN_UNCASED_L4);

HuggingFace在线API集成

为什么用HuggingFace的在线API,就是因为免费,哈哈哈!!!

对于嵌入(embedding),我们建议使用HuggingFace MTEB 排行榜中的模型之一。您必须找到最适合您的特定用例的一种。

以下是获取 HuggingFace API 密钥的方法:

  • 在https://huggingface.co上创建一个帐户
  • 前往https://huggingface.co/settings/tokens 生成新的访问令牌

引入依赖

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-hugging-face</artifactId>
    <version>0.24.0</version>
</dependency>

推理示例

  EmbeddingModel embeddingModel = HuggingFaceEmbeddingModel.builder()
                .accessToken(System.getenv("HF_API_KEY"))
                .modelId("sentence-transformers/all-MiniLM-L6-v2")
                .waitForModel(true)
                .timeout(ofSeconds(60))
                .build();

        Response<Embedding> response = embeddingModel.embed("Hello, how are you?");
        System.out.println(response);

加载离线model

针对加载离线model这块,底层依赖onnxruntime + djl.api

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-embeddings</artifactId>
    <version>0.24.0</version>
</dependency>

证据在langchain4j-embeddings依赖的pom:

<!-- 使用这个加载onnx模型 -->
<dependency>
    <groupId>com.microsoft.onnxruntime</groupId>
    <artifactId>onnxruntime</artifactId>
    <version>1.16.2</version>
</dependency>
<!-- 使用这里内置的分词器等 -->
<dependency>
     <groupId>ai.djl</groupId>
     <artifactId>api</artifactId>
     <version>0.25.0</version>
</dependency>

示例代码

1.首先自己去huggingface或其他站点下载开源的onnx模型到本地

例如:https://huggingface.co/bert-base-uncased

langchain4j,《🌹从零开发短视频电商》,人工智能,音视频,java

2.加载本地onnx模型,并进行推测。

String text = "Let's demonstrate that embedding can be done within a Java process and entirely offline.";
// path  "C:/Users/laker/Downloads/model.onnx"
EmbeddingModel embeddingModel = new OnnxEmbeddingModel("/home/me/model.onnx");
Embedding inProcessEmbedding = embeddingModel.embed(text).content();
System.out.println(inProcessEmbedding);

官方也提供了几个带onnx文件的jar,里面内置了onnx文件,你就不需要再下载了。

  • https://github.com/langchain4j/langchain4j-embeddings

langchain4j,《🌹从零开发短视频电商》,人工智能,音视频,java

根据需要的模型引入依赖。

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-embeddings-bge-small-zh</artifactId>
    <version>0.24.0</version>
</dependency>

推理的示例代码文章来源地址https://www.toymoban.com/news/detail-795366.html

// EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();
EmbeddingModel embeddingModel = new BgeSmallZhEmbeddingModel();
Embedding inProcessEmbedding = embeddingModel.embed(text).content();
System.out.println(inProcessEmbedding);

到了这里,关于从零开发短视频电商 Java开发者的AI大模型(LLM)应用开发和设计-LangChain4j的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 硬核来袭!中国AI大模型峰会“封神之作”,开发者们不容错过!

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年02月14日
    浏览(35)
  • 从零开发短视频电商 PaddleOCR Java推理 (四)优化OCR工具类

    参考 :https://github.com/mymagicpower/AIAS/blob/9dc3c65d07568087ac71453de9070a416eb4e1d0/1_image_sdks/ocr_v4_sdk/src/main/java/top/aias/ocr/OcrV4RecExample.java 输出纯文本 : 结果 :

    2024年01月17日
    浏览(47)
  • 从零开发短视频电商 Tesseract OCR 的 Java 拓展库 javacpp-presets

    项目地址:https://github.com/bytedeco/javacpp-presets JavaCPP: JavaCPP 是一个用于在 Java 中使用本地库的工具,它允许通过 Java 代码访问本地(C/C++)库,而无需编写过多的本地代码。这种方法可以使 Java 与其他语言编写的库进行集成,提供了对性能关键的原生功能的访问。JavaCPP 使用

    2024年01月21日
    浏览(45)
  • 短视频矩阵营销系统技术开发者开发笔记分享

    1. 确定系统需求:根据客户的需求,确定系统的功能和特点,例如用户注册登录、视频上传、视频浏览、评论点赞等。 2. 设计系统架构:根据系统需求,设计系统的整体架构,包括前端、后端、数据库等组件的功能和交互方式。 3. 选择技术栈:根据系统的特点和需求,选择

    2024年02月14日
    浏览(56)
  • 百度Create AI开发者大会剧透丨用好三大AI神器 ,人人都是开发者

    程序员会消失,真的吗?大模型的下一站是什么?开发者的机会在哪里?什么才是最好用的AI应用开发工具?在4月16日举办的2024百度Create AI开发者大会上,百度创始人、董事长兼首席执行官李彦宏将就这些备受瞩目的问题一一进行解答。 4月11日,百度举办了“2024百度Create

    2024年04月13日
    浏览(53)
  • 抖音短视频SEO矩阵系统源码开发及开发者思路分享......

    抖音矩阵号/抖音短视频SEO矩阵系统源码开发及开发者思路分享:          短视频获客系统支持短视频智能剪辑、短视频定时发布,短视频排名查询及优化,智能客服等,那么短视频seo系统开发时需要开发哪些功能呢?今天我就跟大家分享一下我们的开发思路。 首先,目前公

    2024年02月11日
    浏览(65)
  • 助力AI语音开发者的社区-语音之家

    语音之家成立于2021年4月,是一家助力AI语音开发者的社区,我们希望通过知识传播、在线学习、资源分享、各类活动等方式提供全生命周期的服务,帮助全球的AI语音开发者获得成长,洞见AI语音技术领域的发展。目前,社区新媒体矩阵,AI语音技术粉丝数量超过5万。 社区平

    2023年04月10日
    浏览(48)
  • 短视频抖音seo矩阵系统源码开发者思路(一)

    一套优秀的短视频获客系统,支持短视频智能剪辑、短视频定时发布,短视频排名查询及优化,短视频智能客服等,那么短视频seo系统具体开发应该具备哪些功能呢?今天小编就跟大家分享一下我们的技术开发思路。 抖音矩阵系统源码布局,短视频矩阵系统源码管理系统的主

    2024年02月16日
    浏览(55)
  • 短视频抖音账号矩阵系统源码开发者自研(三)

    开发技术新的方向。通过持续的技术创新和用户需求分析,我们将更加注重个性化开发本套短视频矩阵源码系统,目前市面上涵盖的基本功能有视频剪辑、绑定发布、智能回复、数据统计等一些基本的功能。此外我们在开发的时候做了很多优化处理,服务器集群化、并级、

    2024年02月13日
    浏览(49)
  • 短视频抖音账号矩阵系统源码开发者自研(二)

    一、短视频账号矩阵系统源码开发储存集群化开发运转更快 短视频账号矩阵系统源码开发采用储存集群化开发,可以显著提高系统的运转速度和效率。通过优化储存结构和算法,系统能够更快地处理短视频账号数据,确保用户能够流畅地浏览和观看短视频内容。此外,系统源

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包