Appearance
内容生成
博客文章生成
基本实现
java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
public class BlogPostGenerator {
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{topic}\n\n文章要求:\n1. 标题吸引人\n2. 内容结构清晰,有引言、正文和结论\n3. 内容丰富,有具体例子\n4. 语言流畅,适合博客读者\n5. 字数约 1000 字\n\n博客文章:"
);
// 生成博客文章
String topic = "人工智能在日常生活中的应用";
String prompt = promptTemplate.apply(topic);
String blogPost = model.generate(prompt);
System.out.println("主题: " + topic);
System.out.println("\n博客文章:\n" + blogPost);
}
}高级实现
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 AdvancedBlogPostGenerator {
public static void main(String[] args) {
// 创建模型
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4") // 使用更强大的模型
.build();
// 创建第一步链:生成博客大纲
PromptTemplate outlineTemplate = PromptTemplate.from(
"请为以下主题生成博客文章大纲:\n{topic}\n\n大纲要求:\n1. 包含标题\n2. 包含至少 3 个主要部分\n3. 每个部分有子标题\n4. 结构清晰,逻辑连贯\n\n大纲:"
);
LLMChain outlineChain = LLMChain.builder()
.promptTemplate(outlineTemplate)
.model(model)
.build();
// 创建第二步链:基于大纲生成博客文章
PromptTemplate contentTemplate = PromptTemplate.from(
"请根据以下大纲生成博客文章:\n{outline}\n\n文章要求:\n1. 内容丰富,有具体例子\n2. 语言流畅,适合博客读者\n3. 字数约 1500 字\n4. 有引言和结论\n5. 内容符合大纲结构\n\n博客文章:"
);
LLMChain contentChain = LLMChain.builder()
.promptTemplate(contentTemplate)
.model(model)
.build();
// 创建第三步链:优化博客文章
PromptTemplate optimizeTemplate = PromptTemplate.from(
"请优化以下博客文章:\n{blogPost}\n\n优化要求:\n1. 检查语法和拼写错误\n2. 改进句子结构和流畅度\n3. 增强文章的吸引力\n4. 确保内容连贯一致\n5. 保持原文的主要内容不变\n\n优化后的博客文章:"
);
LLMChain optimizeChain = LLMChain.builder()
.promptTemplate(optimizeTemplate)
.model(model)
.build();
// 创建顺序链
SequentialChain sequentialChain = SequentialChain.builder()
.addChain(outlineChain, "topic", "outline")
.addChain(contentChain, "outline", "blogPost")
.addChain(optimizeChain, "blogPost", "optimizedBlogPost")
.build();
// 生成博客文章
String topic = "人工智能在医疗领域的应用与未来发展";
Map<String, Object> inputs = new HashMap<>();
inputs.put("topic", topic);
Map<String, Object> results = sequentialChain.runForMap(inputs);
System.out.println("主题: " + topic);
System.out.println("\n大纲:\n" + results.get("outline"));
System.out.println("\n原始博客文章:\n" + results.get("blogPost"));
System.out.println("\n优化后的博客文章:\n" + results.get("optimizedBlogPost"));
}
}代码生成
基本实现
java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
public class CodeGenerator {
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(
"请生成以下功能的 Java 代码:\n{description}\n\n代码要求:\n1. 代码正确,可编译运行\n2. 代码结构清晰,有适当的注释\n3. 遵循 Java 编码规范\n4. 包含必要的异常处理\n\nJava 代码:"
);
// 生成代码
String description = "一个简单的计算器类,支持加、减、乘、除操作,包含异常处理";
String prompt = promptTemplate.apply(description);
String code = model.generate(prompt);
System.out.println("功能描述: " + description);
System.out.println("\n生成的 Java 代码:\n" + code);
}
}高级实现
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 AdvancedCodeGenerator {
public static void main(String[] args) {
// 创建模型
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4") // 使用更强大的模型
.build();
// 创建第一步链:生成代码
PromptTemplate codeTemplate = PromptTemplate.from(
"请生成以下功能的 Java 代码:\n{description}\n\n代码要求:\n1. 代码正确,可编译运行\n2. 代码结构清晰,有适当的注释\n3. 遵循 Java 编码规范\n4. 包含必要的异常处理\n5. 包含单元测试\n\nJava 代码:"
);
LLMChain codeChain = LLMChain.builder()
.promptTemplate(codeTemplate)
.model(model)
.build();
// 创建第二步链:优化代码
PromptTemplate optimizeTemplate = PromptTemplate.from(
"请优化以下 Java 代码:\n{code}\n\n优化要求:\n1. 提高代码性能\n2. 改进代码可读性\n3. 增强代码健壮性\n4. 确保代码符合最佳实践\n5. 保持功能不变\n\n优化后的 Java 代码:"
);
LLMChain optimizeChain = LLMChain.builder()
.promptTemplate(optimizeTemplate)
.model(model)
.build();
// 创建第三步链:生成文档
PromptTemplate docTemplate = PromptTemplate.from(
"请为以下 Java 代码生成详细的文档:\n{optimizedCode}\n\n文档要求:\n1. 包含类和方法的说明\n2. 包含参数和返回值的说明\n3. 包含使用示例\n4. 格式清晰,易于理解\n\n文档:"
);
LLMChain docChain = LLMChain.builder()
.promptTemplate(docTemplate)
.model(model)
.build();
// 创建顺序链
SequentialChain sequentialChain = SequentialChain.builder()
.addChain(codeChain, "description", "code")
.addChain(optimizeChain, "code", "optimizedCode")
.addChain(docChain, "optimizedCode", "documentation")
.build();
// 生成代码
String description = "一个基于 Java 的简单 RESTful API 服务,使用 Spring Boot 框架,支持用户的 CRUD 操作";
Map<String, Object> inputs = new HashMap<>();
inputs.put("description", description);
Map<String, Object> results = sequentialChain.runForMap(inputs);
System.out.println("功能描述: " + description);
System.out.println("\n生成的 Java 代码:\n" + results.get("code"));
System.out.println("\n优化后的 Java 代码:\n" + results.get("optimizedCode"));
System.out.println("\n生成的文档:\n" + results.get("documentation"));
}
}创意写作
故事生成
java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
public class StoryGenerator {
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(
"请生成一个关于{topic}的故事:\n\n故事要求:\n1. 有引人入胜的情节\n2. 有生动的角色\n3. 有完整的开头、发展和结尾\n4. 语言流畅,描写细腻\n5. 字数约 1000 字\n\n故事:"
);
// 生成故事
String topic = "一个程序员发现了一个能够预测未来的 AI";
String prompt = promptTemplate.apply(topic);
String story = model.generate(prompt);
System.out.println("主题: " + topic);
System.out.println("\n生成的故事:\n" + story);
}
}诗歌生成
java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
public class PoemGenerator {
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(
"请生成一首关于{topic}的诗歌:\n\n诗歌要求:\n1. 有优美的语言\n2. 有深刻的意境\n3. 有韵律感\n4. 格式整齐\n5. 表达真挚的情感\n\n诗歌:"
);
// 生成诗歌
String topic = "春天的早晨";
String prompt = promptTemplate.apply(topic);
String poem = model.generate(prompt);
System.out.println("主题: " + topic);
System.out.println("\n生成的诗歌:\n" + poem);
}
}剧本生成
java
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.prompt.PromptTemplate;
public class ScriptGenerator {
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(
"请生成一个关于{topic}的短剧剧本:\n\n剧本要求:\n1. 有清晰的场景和角色\n2. 有对话和动作描述\n3. 有完整的情节\n4. 语言自然,符合角色性格\n5. 适合舞台表演\n\n剧本:"
);
// 生成剧本
String topic = "两个老朋友在咖啡店重逢";
String prompt = promptTemplate.apply(topic);
String script = model.generate(prompt);
System.out.println("主题: " + topic);
System.out.println("\n生成的剧本:\n" + script);
}
}最佳实践
提示词优化:
- 明确内容要求和格式
- 提供足够的上下文信息
- 使用结构化的提示词模板
模型选择:
- 根据任务复杂度选择合适的模型
- 对于创意写作,使用更具创造力的模型
- 对于技术内容,使用更准确的模型
内容质量:
- 生成后进行人工审核
- 确保内容原创性
- 检查内容的准确性和连贯性
多样性:
- 尝试不同的提示词角度
- 生成多个版本后选择最佳
- 结合人工创意和 AI 生成
效率:
- 批量生成内容
- 利用并行处理提高效率
- 缓存常用的提示词模板
伦理考虑:
- 遵守内容创作的伦理规范
- 避免生成有害或不当内容
- 尊重知识产权
持续改进:
- 收集用户反馈
- 分析生成内容的质量
- 不断优化提示词和生成策略