Skip to content

内容生成

博客文章生成

基本实现

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);
    }
}

最佳实践

  1. 提示词优化

    • 明确内容要求和格式
    • 提供足够的上下文信息
    • 使用结构化的提示词模板
  2. 模型选择

    • 根据任务复杂度选择合适的模型
    • 对于创意写作,使用更具创造力的模型
    • 对于技术内容,使用更准确的模型
  3. 内容质量

    • 生成后进行人工审核
    • 确保内容原创性
    • 检查内容的准确性和连贯性
  4. 多样性

    • 尝试不同的提示词角度
    • 生成多个版本后选择最佳
    • 结合人工创意和 AI 生成
  5. 效率

    • 批量生成内容
    • 利用并行处理提高效率
    • 缓存常用的提示词模板
  6. 伦理考虑

    • 遵守内容创作的伦理规范
    • 避免生成有害或不当内容
    • 尊重知识产权
  7. 持续改进

    • 收集用户反馈
    • 分析生成内容的质量
    • 不断优化提示词和生成策略