Appearance
自动化工具
邮件自动回复
基本实现
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;
}
}最佳实践
功能设计:
- 明确工具的核心功能
- 设计简洁易用的界面
- 确保工具能够解决实际问题
提示词优化:
- 为不同任务设计专用的提示词
- 提供足够的上下文信息
- 明确任务要求和输出格式
模型选择:
- 根据任务复杂度选择合适的模型
- 平衡性能和成本
- 考虑使用更专业的模型
集成与扩展:
- 与其他系统集成
- 添加更多实用工具
- 支持自定义配置
用户体验:
- 提供友好的用户界面
- 确保响应速度
- 处理错误和异常情况
安全性:
- 保护用户数据
- 避免敏感信息泄露
- 实现访问控制
监控与维护:
- 监控系统运行状态
- 收集用户反馈
- 持续优化系统性能