langchain4j+ollama+deepseek小试牛刀

本文主要研究一下如何使用langchain4j集成ollama+deepseek

步骤

pom.xml

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-spring-boot-starter</artifactId>
            <version>${langchain4j-spring.version}</version>
        </dependency>

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
            <version>${langchain4j-spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            &
要使用 `LangChain4j` 和 `Ollama` 来分析 PDF 图纸文件(例如提取内容、理解图纸信息等),我们可以结合以下技术栈: - **PDFBox**:用于从 PDF 文件中提取文本或图像。 - **LangChain4j**:用于构建语言模型链,将 PDF 提取的内容输入到大模型中进行分析。 - **Ollama**:提供本地运行的大语言模型,支持通过 REST API 与 LangChain4j 集成。 --- ## ✅ 实现步骤 1. 使用 PDFBox 提取 PDF 中的文本。 2. 将提取的文本输入到 Ollama 模型中进行分析(如图纸描述理解、尺寸提取、材料识别等)。 3. 使用 LangChain4j 构建 Prompt 并与 Ollama 集成。 --- ## ✅ 示例代码 ### 1. 添加依赖(`pom.xml`) ```xml <dependencies> <!-- PDFBox --> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.27</version> </dependency> <!-- LangChain4j --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-core</artifactId> <version>0.24.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-ollama</artifactId> <version>0.24.0</version> </dependency> <!-- Jackson for JSON handling --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency> </dependencies> ``` --- ### 2. 提取 PDF 内容(PDFBox) ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import java.io.File; import java.io.IOException; public class PdfExtractor { public static String extractTextFromPdf(String filePath) throws IOException { try (PDDocument document = PDDocument.load(new File(filePath))) { PDFTextStripper pdfStripper = new PDFTextStripper(); return pdfStripper.getText(document); } } } ``` --- ### 3. 使用 LangChain4j + Ollama 分析文本 ```java import dev.langchain4j.chain.ConversationChain; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.ollama.OllamaChatModel; public class PdfAnalyzer { public static void analyzePdfText(String pdfText) { // 使用 Ollama 模型(确保 Ollama 已启动) ChatLanguageModel model = OllamaChatModel.builder() .baseUrl("http://localhost:11434") .modelName("llama3") // 可替换为其他模型,如 "mistral" .build(); // 构建 Prompt String prompt = "你是一个图纸分析专家,请分析以下图纸内容并提取以下信息:" + "1. 图纸类型(如建筑、机械等)\n" + "2. 主要尺寸和材料\n" + "3. 是否存在特殊标注或说明\n\n" + "图纸内容如下:\n" + pdfText; // 使用 LangChain4j 调用模型 ConversationChain chain = ConversationChain.builder() .chatLanguageModel(model) .build(); String response = chain.execute(prompt); System.out.println("模型分析结果:\n" + response); } } ``` --- ### 4. 主函数调用示例 ```java import java.io.IOException; public class Main { public static void main(String[] args) { String filePath = "path/to/your/drawing.pdf"; try { String pdfText = PdfExtractor.extractTextFromPdf(filePath); PdfAnalyzer.analyzePdfText(pdfText); } catch (IOException e) { e.printStackTrace(); } } } ``` --- ## ✅ 注意事项 - 确保你已经安装并启动了 Ollama,并拉取了对应模型(如 `ollama pull llama3`)。 - PDF 图纸如果是扫描件(图像形式),需要先进行 OCR(如使用 Tesseract 或 Azure Form Recognizer)。 - LangChain4j 目前对中文支持较好,但具体效果依赖模型本身(如 `llama3:8b` 或 `qwen`)。 --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值