Skip to content

自动化工具

邮件自动回复

基本实现

java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;

public class EmailAutoResponder {
    public static void main(String[] args) {
        // 创建模型
        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .modelName("gpt-3.5-turbo")
                .build();

        // 创建邮件回复提示词模板
        PromptTemplate promptTemplate = PromptTemplate.from(
                "请根据以下邮件内容生成一个专业、友好的回复:\n{emailContent}\n\n回复要求:\n1. 保持专业礼貌的语气\n2. 直接回答邮件中的问题\n3. 提供有用的信息\n4. 适当的结尾\n5. 符合商务邮件格式\n\n回复:"
        );

        // 示例邮件
        String emailContent = "您好,\n\n我是ABC公司的张明,想了解贵公司的产品定价和交货时间。我们正在考虑批量采购,希望能获得更多信息。\n\n谢谢,\n张明";

        // 生成回复
        String prompt = promptTemplate.apply(emailContent);
        String response = model.generate(prompt);

        System.out.println("原始邮件:\n" + emailContent);
        System.out.println("\n自动回复:\n" + response);
    }
}

高级实现

java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
import dev.langchain4j.chain.sequential.SequentialChain;
import dev.langchain4j.chain.llm.LLMChain;

public class AdvancedEmailAutoResponder {
    public static void main(String[] args) {
        // 创建模型
        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .modelName("gpt-4") // 使用更强大的模型
                .build();

        // 创建第一步链:分析邮件
        PromptTemplate analysisTemplate = PromptTemplate.from(
                "请分析以下邮件的内容和意图:\n{emailContent}\n\n分析要求:\n1. 识别邮件的主要目的\n2. 提取关键信息和问题\n3. 确定回复的优先级\n4. 建议回复策略\n\n分析结果:"
        );
        LLMChain analysisChain = LLMChain.builder()
                .promptTemplate(analysisTemplate)
                .model(model)
                .build();

        // 创建第二步链:生成回复
        PromptTemplate responseTemplate = PromptTemplate.from(
                "请根据邮件分析结果生成一个专业、友好的回复:\n\n邮件内容:{emailContent}\n\n分析结果:{analysis}\n\n回复要求:\n1. 保持专业礼貌的语气\n2. 直接回答邮件中的问题\n3. 提供有用的信息\n4. 适当的结尾\n5. 符合商务邮件格式\n\n回复:"
        );
        LLMChain responseChain = LLMChain.builder()
                .promptTemplate(responseTemplate)
                .model(model)
                .build();

        // 创建第三步链:优化回复
        PromptTemplate optimizeTemplate = PromptTemplate.from(
                "请优化以下邮件回复:\n{response}\n\n优化要求:\n1. 检查语法和拼写错误\n2. 改进语言表达\n3. 增强专业性和礼貌性\n4. 确保信息准确完整\n5. 保持回复的简洁性\n\n优化后的回复:"
        );
        LLMChain optimizeChain = LLMChain.builder()
                .promptTemplate(optimizeTemplate)
                .model(model)
                .build();

        // 创建顺序链
        SequentialChain sequentialChain = SequentialChain.builder()
                .addChain(analysisChain, "emailContent", "analysis")
                .addChain(responseChain, "emailContent,analysis", "response")
                .addChain(optimizeChain, "response", "optimizedResponse")
                .build();

        // 示例邮件
        String emailContent = "您好,\n\n我是ABC公司的张明,想了解贵公司的产品定价和交货时间。我们正在考虑批量采购,希望能获得更多信息。\n\n谢谢,\n张明";

        // 生成回复
        Map<String, Object> inputs = new HashMap<>();
        inputs.put("emailContent", emailContent);

        Map<String, Object> results = sequentialChain.runForMap(inputs);
        System.out.println("原始邮件:\n" + emailContent);
        System.out.println("\n邮件分析:\n" + results.get("analysis"));
        System.out.println("\n生成的回复:\n" + results.get("response"));
        System.out.println("\n优化后的回复:\n" + results.get("optimizedResponse"));
    }
}

数据分析助手

基本实现

java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;

public class DataAnalysisAssistant {
    public static void main(String[] args) {
        // 创建模型
        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .modelName("gpt-3.5-turbo")
                .build();

        // 创建数据分析提示词模板
        PromptTemplate promptTemplate = PromptTemplate.from(
                "请分析以下数据并提供见解:\n{data}\n\n分析要求:\n1. 识别数据中的趋势和模式\n2. 指出关键发现\n3. 提供数据驱动的建议\n4. 用清晰的语言解释分析结果\n5. 可以使用表格或图表描述(如果适用)\n\n分析结果:"
        );

        // 示例数据
        String data = "销售数据:\n- 1月:10000元\n- 2月:12000元\n- 3月:9000元\n- 4月:15000元\n- 5月:18000元\n- 6月:20000元";

        // 生成分析
        String prompt = promptTemplate.apply(data);
        String analysis = model.generate(prompt);

        System.out.println("原始数据:\n" + data);
        System.out.println("\n分析结果:\n" + analysis);
    }
}

高级实现

java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
import dev.langchain4j.chain.sequential.SequentialChain;
import dev.langchain4j.chain.llm.LLMChain;

public class AdvancedDataAnalysisAssistant {
    public static void main(String[] args) {
        // 创建模型
        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .modelName("gpt-4") // 使用更强大的模型
                .build();

        // 创建第一步链:数据预处理
        PromptTemplate preprocessTemplate = PromptTemplate.from(
                "请对以下数据进行预处理和清洗:\n{data}\n\n预处理要求:\n1. 识别和处理缺失值\n2. 检测和处理异常值\n3. 标准化数据格式\n4. 提取关键变量\n\n预处理结果:"
        );
        LLMChain preprocessChain = LLMChain.builder()
                .promptTemplate(preprocessTemplate)
                .model(model)
                .build();

        // 创建第二步链:数据分析
        PromptTemplate analysisTemplate = PromptTemplate.from(
                "请分析以下预处理后的数据:\n{preprocessedData}\n\n分析要求:\n1. 识别数据中的趋势和模式\n2. 计算关键统计指标\n3. 进行相关性分析\n4. 识别异常和异常值\n\n分析结果:"
        );
        LLMChain analysisChain = LLMChain.builder()
                .promptTemplate(analysisTemplate)
                .model(model)
                .build();

        // 创建第三步链:生成报告
        PromptTemplate reportTemplate = PromptTemplate.from(
                "请根据数据分析结果生成一份详细的分析报告:\n{analysis}\n\n报告要求:\n1. 包含数据概述\n2. 详细的分析结果\n3. 数据驱动的建议\n4. 可视化建议(如果适用)\n5. 结论和下一步行动\n\n分析报告:"
        );
        LLMChain reportChain = LLMChain.builder()
                .promptTemplate(reportTemplate)
                .model(model)
                .build();

        // 创建顺序链
        SequentialChain sequentialChain = SequentialChain.builder()
                .addChain(preprocessChain, "data", "preprocessedData")
                .addChain(analysisChain, "preprocessedData", "analysis")
                .addChain(reportChain, "analysis", "report")
                .build();

        // 示例数据
        String data = "销售数据:\n- 1月:10000元\n- 2月:12000元\n- 3月:9000元\n- 4月:15000元\n- 5月:18000元\n- 6月:20000元\n\n客户数据:\n- 新客户:100人\n- 老客户:200人\n- 转化率:25%\n- 平均订单金额:500元";

        // 生成分析报告
        Map<String, Object> inputs = new HashMap<>();
        inputs.put("data", data);

        Map<String, Object> results = sequentialChain.runForMap(inputs);
        System.out.println("原始数据:\n" + data);
        System.out.println("\n预处理结果:\n" + results.get("preprocessedData"));
        System.out.println("\n分析结果:\n" + results.get("analysis"));
        System.out.println("\n分析报告:\n" + results.get("report"));
    }
}

个人助理

基本实现

java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatLanguageModelWithMemory;

public class PersonalAssistant {
    public static void main(String[] args) {
        // 创建模型
        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .modelName("gpt-3.5-turbo")
                .build();

        // 创建记忆
        MessageWindowChatMemory memory = MessageWindowChatMemory.builder()
                .maxMessages(10)
                .build();

        // 创建带记忆的模型
        ChatLanguageModelWithMemory modelWithMemory = ChatLanguageModelWithMemory.builder()
                .chatLanguageModel(model)
                .chatMemory(memory)
                .build();

        // 系统提示词
        String systemPrompt = "你是一个聪明、友好的个人助理,能够帮助用户完成各种任务,如日程安排、信息查询、建议提供等。请保持专业、礼貌的语气,提供有用的信息和建议。";

        // 聊天循环
        Scanner scanner = new Scanner(System.in);
        System.out.println("个人助理已启动,输入 'exit' 退出");
        
        // 发送系统提示词
        modelWithMemory.generate(systemPrompt);
        
        while (true) {
            System.out.print("你: ");
            String input = scanner.nextLine();
            
            if (input.equalsIgnoreCase("exit")) {
                System.out.println("对话结束");
                break;
            }
            
            // 生成响应
            String response = modelWithMemory.generate(input);
            System.out.println("助理: " + response);
        }
        
        scanner.close();
    }
}

高级实现

java
import dev.langchain4j.agent.Agent;
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;

public class AdvancedPersonalAssistant {
    public static void main(String[] args) {
        // 创建模型
        OpenAiChatModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .modelName("gpt-3.5-turbo")
                .build();

        // 创建记忆
        MessageWindowChatMemory memory = MessageWindowChatMemory.builder()
                .maxMessages(10)
                .build();

        // 创建工具
        Tool weatherTool = Tool.builder()
                .name("get_weather")
                .description("获取指定城市的天气信息")
                .function(input -> getWeather(input))
                .build();

        Tool calculatorTool = Tool.builder()
                .name("calculate")
                .description("执行数学计算")
                .function(input -> calculate(input))
                .build();

        Tool reminderTool = Tool.builder()
                .name("set_reminder")
                .description("设置提醒")
                .function(input -> setReminder(input))
                .build();

        // 创建代理
        Agent agent = Agent.builder()
                .model(model)
                .chatMemory(memory)
                .tools(Arrays.asList(weatherTool, calculatorTool, reminderTool))
                .systemMessage("你是一个聪明、友好的个人助理,能够帮助用户完成各种任务。请保持专业、礼貌的语气,提供有用的信息和建议。")
                .build();

        // 聊天循环
        Scanner scanner = new Scanner(System.in);
        System.out.println("高级个人助理已启动,输入 'exit' 退出");
        
        while (true) {
            System.out.print("你: ");
            String input = scanner.nextLine();
            
            if (input.equalsIgnoreCase("exit")) {
                System.out.println("对话结束");
                break;
            }
            
            // 执行任务
            String response = agent.execute(input);
            System.out.println("助理: " + response);
        }
        
        scanner.close();
    }
    
    private static String getWeather(String city) {
        // 模拟天气查询
        return city + "的天气晴朗,温度 25 度,微风。";
    }
    
    private static String calculate(String expression) {
        // 简单的数学计算
        try {
            javax.script.ScriptEngineManager manager = new javax.script.ScriptEngineManager();
            javax.script.ScriptEngine engine = manager.getEngineByName("JavaScript");
            Object result = engine.eval(expression);
            return "计算结果: " + result;
        } catch (Exception e) {
            return "计算错误: " + e.getMessage();
        }
    }
    
    private static String setReminder(String reminder) {
        // 模拟设置提醒
        return "提醒已设置: " + reminder;
    }
}

最佳实践

  1. 功能设计

    • 明确工具的核心功能
    • 设计简洁易用的界面
    • 确保工具能够解决实际问题
  2. 提示词优化

    • 为不同任务设计专用的提示词
    • 提供足够的上下文信息
    • 明确任务要求和输出格式
  3. 模型选择

    • 根据任务复杂度选择合适的模型
    • 平衡性能和成本
    • 考虑使用更专业的模型
  4. 集成与扩展

    • 与其他系统集成
    • 添加更多实用工具
    • 支持自定义配置
  5. 用户体验

    • 提供友好的用户界面
    • 确保响应速度
    • 处理错误和异常情况
  6. 安全性

    • 保护用户数据
    • 避免敏感信息泄露
    • 实现访问控制
  7. 监控与维护

    • 监控系统运行状态
    • 收集用户反馈
    • 持续优化系统性能