AI Agent在媒体与内容创作中的应用:生成、编辑与分发

从自动化到智能化:构建下一代内容创作引擎


摘要/引言

在当今数字化时代,内容创作正经历着前所未有的变革。传统的内容生产模式面临着效率低下、成本高昂、个性化不足等挑战。随着人工智能技术的快速发展,特别是大语言模型和AI Agent技术的兴起,我们正站在内容创作革命的门槛上。

本文将深入探讨AI Agent如何在媒体与内容创作的全流程中发挥作用——从内容生成、智能编辑到精准分发。我们将不仅介绍理论概念,还会通过实际代码示例和项目案例,展示如何构建和应用这些AI驱动的内容创作系统。

读完本文,你将:

  1. 理解AI Agent在内容创作领域的核心概念和工作原理
  2. 掌握构建内容创作AI Agent的关键技术和方法
  3. 了解如何将AI Agent应用于实际的内容生成、编辑和分发场景
  4. 获得可运行的代码示例和项目实践经验
  5. 洞察这一领域的未来发展趋势和挑战

让我们一起踏上这场AI驱动的内容创作之旅!


目标读者与前置知识

目标读者:

  • 有一定Python编程基础的AI/ML开发者
  • 对内容科技(Content Tech)感兴趣的产品经理
  • 希望利用AI提升工作效率的内容创作者和编辑
  • 媒体行业的技术负责人和创新推动者

前置知识:

  • 基础的Python编程能力
  • 对机器学习和自然语言处理有基本了解
  • 熟悉基本的API调用和数据处理
  • 对内容创作流程有一定认知更佳

文章目录

  1. 引言与基础

    • 摘要/引言
    • 目标读者与前置知识
    • 文章目录
  2. 问题背景与动机

    • 传统内容创作的挑战
    • AI技术在内容领域的演进
    • 为什么AI Agent是内容创作的未来
  3. 核心概念与理论基础

    • 什么是AI Agent
    • 内容创作AI Agent的核心组件
    • 大语言模型在内容创作中的角色
    • 多模态内容理解与生成
  4. 环境准备

    • 技术栈选择
    • 开发环境搭建
    • 关键库和工具安装
  5. 分步实现:内容生成AI Agent

    • 需求分析与系统设计
    • 基础内容生成模块
    • 风格迁移与个性化调整
    • 内容质量评估与优化
  6. 分步实现:内容编辑AI Agent

    • 智能编辑助手的设计思路
    • 语法与风格优化
    • 事实核查与内容审核
    • 多版本内容生成
  7. 分步实现:内容分发AI Agent

    • 分发策略与用户画像
    • 多平台适配与格式转换
    • A/B测试与效果分析
    • 自动化分发流程
  8. 关键代码解析与深度剖析

    • Agent核心架构设计
    • 提示工程最佳实践
    • 记忆机制与上下文管理
    • 工具使用与功能扩展
  9. 结果展示与验证

    • 系统功能演示
    • 性能测试与评估
    • 实际应用案例展示
  10. 性能优化与最佳实践

    • 响应时间优化
    • 成本控制策略
    • 内容质量保障机制
    • 团队协作与工作流整合
  11. 常见问题与解决方案

    • 技术挑战与应对
    • 内容原创性与版权问题
    • 伦理考量与内容安全
    • 实施过程中的常见陷阱
  12. 未来展望与扩展方向

    • 技术发展趋势
    • 新兴应用场景
    • 行业融合与创新
    • 研究前沿与开放问题
  13. 总结

  14. 参考资料

  15. 附录


第二部分:核心内容

问题背景与动机

传统内容创作的挑战

在数字化媒体蓬勃发展的今天,内容创作行业正面临着前所未有的压力和挑战。让我们先看看传统内容创作模式存在哪些痛点:

1. 生产效率瓶颈
传统内容创作过程通常涉及选题、调研、撰写、编辑、审核、发布等多个环节,每个环节都需要大量的人力投入和时间成本。一篇高质量的深度报道可能需要数天甚至数周的时间来完成,这在信息快速迭代的今天显得尤为低效。

2. 个性化需求难以满足
随着社交媒体和算法推荐的兴起,用户对内容的个性化需求越来越高。然而,传统的"一对多"内容生产模式难以满足不同用户群体的兴趣偏好和阅读习惯。

3. 多平台适配成本高
现代内容需要在网站、微信公众号、微博、抖音、小红书等多个平台分发,每个平台都有其独特的内容格式、风格要求和发布规则。为同一内容制作多个平台版本需要大量重复性工作。

4. 内容质量参差不齐
在"内容为王"的时代,高质量内容始终是稀缺资源。然而,随着内容需求量的激增,许多媒体机构不得不降低内容质量标准以维持发布频率,导致整体内容生态质量下降。

5. 数据分析与决策滞后
传统内容创作往往依赖编辑的经验和直觉进行选题和分发决策,缺乏数据驱动的科学方法。内容效果分析通常在发布后很长时间才能完成,难以及时调整策略。

这些挑战不仅困扰着传统媒体机构,也影响着企业营销部门、内容创作者个人等所有需要持续生产高质量内容的组织和个人。

AI技术在内容领域的演进

AI技术在内容领域的应用并非一蹴而就,而是经历了一个逐步演进的过程:

1. 早期阶段:规则引擎与模板化内容(2010年前)
这一阶段的内容AI主要基于预定义的规则和模板。例如,一些财经媒体使用模板化系统自动生成公司财报摘要,体育媒体自动生成比赛结果简报。这些系统虽然提高了效率,但内容质量和灵活性有限。

2. 发展阶段:机器学习与自然语言处理(2010-2018)
随着机器学习技术的进步,特别是深度学习的兴起,AI开始能够处理更复杂的内容任务。这一时期出现了能够自动分类、标签、摘要内容的系统,以及基于统计模型的简单文本生成工具。

3. 突破阶段:大语言模型时代(2018-至今)
Transformer架构的提出和GPT系列模型的出现,彻底改变了内容AI的格局。大语言模型展现出了惊人的文本理解和生成能力,能够创作连贯、有逻辑甚至有创意的内容。这一时期,AI写作助手、自动摘要工具、内容优化软件等产品大量涌现。

4. 未来趋势:AI Agent与自主内容创作(现在-未来)
目前,我们正站在一个新的转折点上——从单纯的AI工具向AI Agent演进。AI Agent不仅能够执行特定的内容任务,还能够理解复杂的创作目标,自主规划创作流程,调用多种工具和资源,并根据反馈不断优化输出结果。

为什么AI Agent是内容创作的未来

那么,为什么AI Agent将成为内容创作的未来?让我们从几个维度来分析:

1. 端到端的内容创作能力
与传统的单点AI工具不同,AI Agent能够覆盖内容创作的全流程。从选题策划、资料收集、内容撰写、编辑优化到分发推广,AI Agent可以自主完成整个创作周期,大大提升效率。

2. 更强的自主性和适应性
AI Agent具有目标导向的行为能力,能够根据创作目标自主规划和调整工作流程。面对不同的内容需求、平台特性和用户偏好,AI Agent可以灵活调整策略,产出最适合的内容。

3. 多模态内容处理能力
现代内容早已超越纯文本的范畴,图片、视频、音频等多模态内容越来越重要。AI Agent能够整合多种AI模型,处理和生成不同形式的内容,创造更丰富的媒体体验。

4. 持续学习与自我优化
通过分析内容表现数据和用户反馈,AI Agent可以不断学习和优化自己的创作策略。这种闭环学习机制使得AI Agent的内容质量能够持续提升,越来越符合目标受众的需求。

5. 人机协作的新范式
AI Agent不是要取代人类创作者,而是要成为他们的强大合作伙伴。通过人机协作,人类可以专注于创意构思和战略决策,而将繁琐的执行工作交给AI Agent,实现"1+1>2"的效果。

正是基于这些优势,AI Agent正在成为内容创作领域的革命性力量,推动整个行业向更高效、更智能、更个性化的方向发展。


核心概念与理论基础

在深入探讨AI Agent在内容创作中的应用之前,我们需要先建立一些核心概念和理论基础。这将帮助我们更好地理解后续的技术实现和应用案例。

什么是AI Agent

核心概念:
AI Agent(人工智能代理)是一种能够感知环境、做出决策并采取行动以实现特定目标的自主系统。与传统的软件程序不同,AI Agent具有自主性、反应性、主动性和社交能力等特征。

在内容创作的语境下,AI Agent可以被理解为一个"智能创作助手"或"虚拟内容专家",它能够理解创作需求,规划创作流程,调用各种工具和资源,生成高质量内容,并根据反馈不断优化。

AI Agent的核心特征:

  1. 自主性(Autonomy):能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。
  2. 反应性(Reactivity):能够感知环境(包括用户输入、数据反馈等)并及时做出响应。
  3. 主动性(Proactivity):不仅能够对环境做出反应,还能够主动采取行动以实现长期目标。
  4. 社交能力(Social Ability):能够与其他Agent(包括人类)进行交互和协作。

内容创作AI Agent的基本架构:
一个典型的内容创作AI Agent通常包含以下几个核心组件:

  1. 感知模块:负责接收和理解用户需求、环境信息和反馈数据。
  2. 记忆模块:存储创作历史、用户偏好、领域知识等信息。
  3. 推理与决策模块:根据感知信息和记忆内容,制定创作策略和行动计划。
  4. 行动模块:执行具体的创作任务,如文本生成、图像创作、编辑优化等。
  5. 学习模块:根据结果反馈,优化Agent的行为策略和知识模型。
内容创作AI Agent的核心组件

现在让我们更详细地了解内容创作AI Agent的各个核心组件:

1. 感知模块(Perception Module)
感知模块是AI Agent与外界交互的接口,它负责:

  • 理解用户的创作需求和指令
  • 收集和分析相关数据和信息
  • 监测内容表现和用户反馈
  • 理解不同平台的规则和要求

在技术实现上,感知模块通常包含:

  • 自然语言理解(NLU)组件,用于解析用户指令
  • 数据采集和处理组件,用于收集和整理相关信息
  • 内容分析组件,用于理解已有内容的特征和质量

2. 记忆模块(Memory Module)
记忆模块使AI Agent能够积累和利用经验知识,它通常包含几种不同类型的记忆:

  • 短期记忆(Short-term Memory):存储当前创作任务的上下文信息,如对话历史、中间结果等。
  • 长期记忆(Long-term Memory):存储Agent的知识体系、创作经验、用户偏好等长期信息。
  • 工作记忆(Working Memory):存储当前正在处理的信息和中间状态。

在技术实现上,记忆模块可以采用向量数据库、知识图谱、传统数据库等多种技术组合。

3. 推理与决策模块(Reasoning & Decision Module)
这是AI Agent的"大脑",负责根据感知信息和记忆内容进行推理和决策:

  • 制定创作计划和流程
  • 选择合适的创作工具和方法
  • 调整创作策略以应对变化
  • 评估和优化创作结果

推理与决策模块通常结合了:

  • 大语言模型的推理能力
  • 规则引擎和逻辑推理
  • 机器学习模型的预测能力
  • 搜索和优化算法

4. 行动模块(Action Module)
行动模块负责执行具体的创作任务,它可以包含多种工具和能力:

  • 文本生成与编辑
  • 图像和视频创作
  • 多模态内容整合
  • 内容优化与格式转换
  • 发布和分发操作

行动模块通常通过API调用的方式整合各种AI服务和工具,形成一个完整的创作工具箱。

5. 学习模块(Learning Module)
学习模块使AI Agent能够持续改进和优化:

  • 从内容表现数据中学习
  • 从用户反馈中学习
  • 从人类创作者的示范中学习
  • 更新和优化Agent的策略和模型

学习模块可以采用在线学习、强化学习、微调等多种技术方法。

大语言模型在内容创作中的角色

大语言模型(LLM)是现代内容创作AI Agent的核心技术基础,它们在多个方面发挥着关键作用:

1. 内容生成引擎
LLM最直接的应用是作为内容生成引擎,能够根据提示生成各种类型的文本内容,包括文章、故事、代码、诗歌等。它们掌握了丰富的语言知识和世界知识,能够生成连贯、有逻辑的内容。

2. 推理与规划核心
除了生成内容,LLM还展现出了强大的推理和规划能力。它们能够理解复杂的创作目标,分解任务,制定计划,并根据中间结果调整策略。这种能力使LLM成为AI Agent推理与决策模块的理想选择。

3. 工具使用协调器
现代LLM(如GPT-4、Claude 3等)具有函数调用(Function Calling)和工具使用(Tool Use)的能力,能够根据需要调用外部工具和API。这使得AI Agent可以通过LLM协调多种工具,完成复杂的创作任务。

4. 理解与交互接口
LLM强大的自然语言理解能力使AI Agent能够以自然的方式与用户交互。用户可以用日常语言描述创作需求,而LLM能够准确理解这些需求并转化为具体的行动。

5. 知识整合与应用
LLM在预训练过程中学习了大量的知识,这些知识可以被AI Agent用于内容创作。此外,通过检索增强生成(RAG)等技术,AI Agent还可以将LLM的通用知识与特定领域的专业知识结合起来,生成更准确、更专业的内容。

为了更直观地展示LLM在AI Agent中的角色,让我们看一个概念架构图:

自然语言交互

推理决策

记忆访问

工具调用

生成内容

反馈

上下文

用户

大语言模型

任务规划器

记忆模块

工具集

内容输出

多模态内容理解与生成

现代内容创作早已超越了纯文本的范畴,图片、视频、音频等多模态内容变得越来越重要。因此,现代内容创作AI Agent需要具备多模态内容的理解和生成能力。

多模态内容理解:
多模态理解是指AI能够同时处理和理解多种类型的输入信息,如文本、图像、音频、视频等。在内容创作中,这意味着:

  • 能够分析图片的内容、风格和情感
  • 能够理解视频的情节、场景和主题
  • 能够转录和分析音频内容
  • 能够将不同模态的信息整合起来,形成全面的理解

多模态内容生成:
多模态生成是指AI能够创建多种类型的内容,包括:

  • 文本到图像生成:根据文字描述创建图片
  • 文本到视频生成:根据文字描述创建视频
  • 文本到音频生成:根据文字内容生成语音或音乐
  • 图像到文本生成:根据图片生成描述或故事
  • 跨模态转换:在不同模态之间进行内容转换

多模态AI Agent的优势:

  1. 更丰富的表达方式:能够创建图文并茂、音视频结合的多媒体内容
  2. 更高效的创作流程:可以一次性生成多种形式的内容,避免重复工作
  3. 更好的用户体验:能够根据不同平台和场景提供最合适的内容形式
  4. 更创意的内容产出:多模态组合可以激发更多创意可能性

为了更好地理解这些核心概念之间的关系,让我们创建一个概念对比表和实体关系图:

内容创作AI核心概念对比表:

概念 核心功能 关键技术 主要应用场景 优势 局限性
传统内容工具 辅助单一创作环节 规则引擎、模板 语法检查、简单排版 简单易用、可控性强 功能单一、灵活性有限
大语言模型 文本理解与生成 Transformer、深度学习 文本创作、对话交互 内容质量高、通用性强 缺乏长期记忆、工具使用能力有限
多模态模型 跨模态内容处理 多模态Transformer、扩散模型 图文创作、视频生成 内容形式丰富、表现力强 计算资源需求大、技术成熟度有待提高
AI Agent 自主完成复杂任务 LLM+记忆+工具+规划 端到端内容创作、智能分发 自主性强、覆盖全流程 复杂度高、开发难度大

内容创作AI概念实体关系图:

使用

包含

拥有

使用

生成

执行

执行

执行

执行

包含

包含

包含

发布

USER

AI_AGENT

LLM

MEMORY

TOOL

CONTENT

TEXT_GENERATION

REASONING

MULTIMODAL_MODEL

IMAGE_GENERATION

VIDEO_GENERATION

TEXT

IMAGE

VIDEO

PLATFORM

内容创作AI Agent的数学模型基础

虽然我们不需要深入所有的数学细节,但了解一些基础的数学模型可以帮助我们更好地理解AI Agent的工作原理。

1. 大语言模型的数学基础

大语言模型通常基于Transformer架构,其核心是自注意力机制(Self-Attention)。自注意力机制的数学表达式如下:

Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V

其中:

  • Q Q Q(Query)、 K K K(Key)、 V V V(Value)是输入向量经过线性变换得到的三个矩阵
  • d k d_k dk K K K的维度,用于缩放点积以防止梯度消失
  • softmax \text{softmax} softmax函数用于归一化注意力权重

2. AI Agent决策过程的数学模型

AI Agent的决策过程可以被建模为一个马尔可夫决策过程(MDP):

M = ( S , A , P , R , γ ) M = (S, A, P, R, \gamma) M=(S,A,P,R,γ)

其中:

  • S S S是状态空间,表示Agent可能处于的所有状态
  • A A A是行动空间,表示Agent可以采取的所有行动
  • P P P是状态转移概率,表示在状态 s s s采取行动 a a a后转移到状态 s ′ s' s的概率
  • R R R是奖励函数,表示在状态 s s s采取行动 a a a后获得的奖励
  • γ \gamma γ是折扣因子,表示未来奖励的重要性

Agent的目标是学习一个策略 π ( a ∣ s ) \pi(a|s) π(as),使得累积奖励最大化:

max ⁡ π E [ ∑ t = 0 ∞ γ t R ( s t , a t ) ] \max_\pi \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t R(s_t, a_t)\right] πmaxE[t=0γtR(st,at)]

3. 内容质量评估的数学模型

内容质量评估可以通过多种指标来量化,例如:

  • 可读性指标,如Flesch-Kincaid年级指数:
    F K G L = 0.39 × 总词数 句子数 + 11.8 × 总音节数 总词数 − 15.59 FKGL = 0.39 \times \frac{\text{总词数}}{\text{句子数}} + 11.8 \times \frac{\text{总音节数}}{\text{总词数}} - 15.59 FKGL=0.39×句子数总词数+11.8×总词数总音节数15.59

  • 内容多样性指标,如词汇多样性(Type-Token Ratio):
    T T R = 不同词汇数量 总词汇数量 TTR = \frac{\text{不同词汇数量}}{\text{总词汇数量}} TTR=总词汇数量不同词汇数量

这些数学模型为我们设计和优化内容创作AI Agent提供了理论基础和量化工具。


环境准备

在开始构建我们的内容创作AI Agent之前,我们需要先准备好开发环境。这包括选择合适的技术栈、安装必要的软件和库,以及配置开发工具。

技术栈选择

我们将使用以下技术栈来构建我们的内容创作AI Agent:

核心编程语言:

  • Python 3.10+:Python拥有丰富的AI/ML生态系统,是开发AI应用的首选语言。

大语言模型:

  • OpenAI GPT-4/GPT-3.5:作为核心推理和生成引擎
  • 可选:Claude 3、Llama 2等其他模型

多模态模型:

  • DALL-E 3:用于图像生成
  • Stable Diffusion:作为开源图像生成替代方案
  • Whisper:用于音频转录

向量数据库:

  • ChromaDB:轻量级向量数据库,适合开发和测试
  • 可选:Pinecone、Weaviate等生产级向量数据库

Web框架(用于构建API和界面):

  • FastAPI:高性能Python Web框架,适合构建API
  • Streamlit:快速构建数据应用和原型界面

其他关键库:

  • LangChain:用于构建LLM应用的框架
  • LlamaIndex(GPT Index):用于构建LLM索引和检索系统
  • Pillow:图像处理
  • python-dotenv:环境变量管理
  • requests:HTTP请求
  • asyncio:异步编程
开发环境搭建

现在让我们一步步搭建开发环境:

1. 安装Python

首先,确保你安装了Python 3.10或更高版本。你可以从Python官网下载并安装。

# 检查Python版本
python --version
# 或
python3 --version

2. 创建虚拟环境

使用虚拟环境可以避免依赖冲突,保持项目环境的清洁:

# 创建项目目录
mkdir content-creation-agent
cd content-creation-agent

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate

3. 安装必要的库

创建一个requirements.txt文件,包含所有必要的依赖:

# requirements.txt
fastapi==0.104.1
uvicorn==0.24.0
streamlit==1.28.2
openai==1.3.7
langchain==0.0.335
langchain-openai==0.0.2
chromadb==0.4.18
llama-index==0.9.14
python-dotenv==1.0.0
pillow==10.1.0
requests==2.31.0
pydantic==2.5.2
python-multipart==0.0.6

然后安装这些依赖:

pip install -r requirements.txt

4. 设置环境变量

创建一个.env文件来存储敏感信息,如API密钥:

# .env
OPENAI_API_KEY=your_openai_api_key_here
# 可选:其他API密钥
# ANTHROPIC_API_KEY=your_anthropic_api_key_here
# HUGGINGFACE_API_KEY=your_huggingface_api_key_here

确保将.env文件添加到.gitignore中,以避免意外提交敏感信息。

5. 项目结构设置

我们将按照以下结构组织项目:

content-creation-agent/
├── .env
├── .gitignore
├── requirements.txt
├── README.md
├── src/
│   ├── __init__.py
│   ├── agents/
│   │   ├── __init__.py
│   │   ├── content_generator.py
│   │   ├── content_editor.py
│   │   └── content_distributor.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── content_models.py
│   │   └── user_models.py
│   ├── tools/
│   │   ├── __init__.py
│   │   ├── research_tools.py
│   │   ├── image_tools.py
│   │   └── seo_tools.py
│   ├── utils/
│   │   ├── __init__.py
│   │   ├── config.py
│   │   └── helpers.py
│   └── memory/
│       ├── __init__.py
│       └── vector_store.py
├── api/
│   ├── __init__.py
│   └── main.py
├── ui/
│   └── app.py
├── data/
│   ├── examples/
│   └── outputs/
└── notebooks/
    └── exploration.ipynb

这个结构将我们的代码组织成逻辑清晰的模块,便于开发和维护。


分步实现:内容生成AI Agent

现在我们已经准备好了开发环境,让我们开始构建内容生成AI Agent。这是我们系统的第一个核心组件,负责根据用户需求生成高质量的内容。

需求分析与系统设计

在开始编码之前,让我们先明确内容生成AI Agent的需求和设计:

核心功能需求:

  1. 能够理解用户的内容需求(主题、风格、长度、目标受众等)
  2. 能够进行相关研究和信息收集
  3. 能够生成结构化、高质量的内容
  4. 支持多种内容类型(文章、博客、社交媒体帖子等)
  5. 允许用户迭代和修改生成的内容

系统设计思路:
我们将采用"规划-研究-写作-优化"的四阶段流程来设计内容生成Agent:

  1. 规划阶段:理解用户需求,制定内容大纲和写作计划
  2. 研究阶段:收集相关信息和资料,构建知识背景
  3. 写作阶段:根据大纲和研究资料生成内容
  4. 优化阶段:优化内容质量,确保符合用户需求

让我们创建一个流程图来可视化这个过程:

接收用户需求

需求分析与澄清

制定内容大纲

收集研究资料

生成初稿

内容质量评估

是否满意?

收集反馈并修改

最终优化与格式化

输出生成内容

基础内容生成模块

让我们开始实现基础的内容生成模块。首先,我们将创建一个配置文件来管理我们的设置:

# src/utils/config.py
import os
from dotenv import load_dotenv
from pydantic_settings import BaseSettings

# 加载环境变量
load_dotenv()

class Settings(BaseSettings):
    """应用配置"""
    # API配置
    OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "")
    
    # 模型配置
    DEFAULT_MODEL: str = "gpt-4-1106-preview"
    FAST_MODEL: str = "gpt-3.5-turbo-1106"
    
    # 内容生成配置
    MAX_TOKENS: int = 4000
    TEMPERATURE: float = 0.7
    TOP_P: float = 0.95
    
    # 向量数据库配置
    CHROMA_PERSIST_DIR: str = "./data/chroma_db"
    
    class Config:
        env_file = ".env"

# 创建全局配置实例
settings = Settings()

接下来,让我们创建一个基础的内容生成器类:

# src/agents/content_generator.py
import openai
from typing import Dict, List, Optional, Any
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
from langchain.schema import HumanMessage, SystemMessage, AIMessage
from src.utils.config import settings

class ContentGenerator:
    """基础内容生成器"""
    
    def __init__(self, model: str = None, temperature: float = None):
        """
        初始化内容生成器
        
        Args:
            model: 使用的模型名称
            temperature: 生成温度,控制随机性
        """
        self.model = model or settings.DEFAULT_MODEL
        self.temperature = temperature or settings.TEMPERATURE
        
        # 初始化LangChain的ChatOpenAI
        self.llm = ChatOpenAI(
            model=self.model,
            temperature=self.temperature,
            max_tokens=settings.MAX_TOKENS,
            openai_api_key=settings.OPENAI_API_KEY
        )
    
    def generate_content(self, prompt: str, system_prompt: str = None) -> str:
        """
        基础内容生成方法
        
        Args:
            prompt: 用户提示词
            system_prompt: 系统提示词,可选
            
        Returns:
            生成的内容
        """
        messages = []
        
        if system_prompt:
            messages.append(SystemMessage(content=system_prompt))
        
        messages.append(HumanMessage(content=prompt))
        
        response = self.llm(messages)
        return response.content
    
    def generate_structured_content(self, topic: str, content_type: str = "blog_post", 
                                   target_audience: str = "general", 
                                   tone: str = "informative",
                                   length: str = "medium") -> Dict[str, Any]:
        """
        生成结构化内容
        
        Args:
            topic: 内容主题
            content_type: 内容类型 (blog_post, article, social_media等)
            target_audience: 目标受众
            tone: 语气风格
            length: 内容长度 (short, medium, long)
            
        Returns:
            包含标题、大纲、内容的结构化结果
        """
        # 系统提示词
        system_prompt = """你是一位专业的内容创作专家,擅长创作高质量、引人入胜的内容。
请根据用户的需求,创建结构清晰、信息丰富的内容。"""
        
        # 用户提示词
        user_prompt = f"""请为以下主题创作{content_type}:

主题:{topic}
目标受众:{target_audience}
语气风格:{tone}
内容长度:{length}

请按照以下格式输出:
1. 标题:一个引人注目的标题
2. 大纲:内容的详细大纲,包含主要章节和子章节
3. 完整内容:基于大纲的完整内容

请确保内容原创、信息准确、结构清晰。"""
        
        # 生成内容
        result = self.generate_content(user_prompt, system_prompt)
        
        # 简单解析结果(实际应用中可能需要更复杂的解析逻辑)
        parsed_result = self._parse_structured_output(result)
        
        return parsed_result
    
    def _parse_structured_output(self, output: str) -> Dict[str, Any]:
        """
        解析结构化输出
        
        Args:
            output: 模型生成的原始输出
            
        Returns:
            解析后的结构化数据
        """
        # 这是一个简单的解析实现,实际应用中可能需要更复杂的逻辑
        # 例如使用正则表达式、提示词优化或函数调用
        sections = output.split("\n\n")
        
        result = {
            "title": "",
            "outline": "",
            "content": output
        }
        
        # 简单尝试提取标题
        for i, section in enumerate(sections):
            if "标题" in section or "1." in section and i == 0:
                result["title"] = section.replace("1. 标题:", "").replace("标题:", "").strip()
            elif "大纲" in section or "2." in section:
                result["outline"] = section
        
        return result

现在,让我们创建一个简单的脚本来测试我们的内容生成器:

# test_content_generator.py
from src.agents.content_generator import ContentGenerator

def test_basic_generation():
    """测试基础内容生成"""
    generator = ContentGenerator()
    
    print("测试基础内容生成...")
    result = generator.generate_content(
        prompt="请写一段关于人工智能在内容创作中应用的简介,大约100字。",
        system_prompt="你是一位科技领域的专业作家,擅长用简洁明了的语言解释复杂概念。"
    )
    
    print("\n生成结果:")
    print(result)

def test_structured_generation():
    """测试结构化内容生成"""
    generator = ContentGenerator()
    
    print("\n\n测试结构化内容生成...")
    result = generator.generate_structured_content(
        topic="AI驱动的内容创作革命",
        content_type="blog_post",
        target_audience="内容创作者和营销人员",
        tone="informative",
        length="medium"
    )
    
    print("\n生成结果:")
    print(f"标题:{result['title']}")
    print(f"\n大纲:{result['outline']}")
    print(f"\n完整内容:\n{result['content']}")

if __name__ == "__main__":
    test_basic_generation()
    test_structured_generation()
风格迁移与个性化调整

现在我们已经有了基础的内容生成能力,接下来让我们添加风格迁移和个性化调整功能,使我们的Agent能够根据不同的需求调整内容风格。

# src/agents/content_generator.py(续)
class ContentGenerator:
    # ... 之前的代码 ...
    
    def adjust_style(self, content: str, target_style: str, 
                    target_audience: str = None) -> str:
        """
        调整内容风格
        
        Args:
            content: 原始内容
            target_style: 目标风格 (formal, casual, humorous, technical等)
            target_audience: 目标受众,可选
            
        Returns:
            风格调整后的内容
        """
        style_descriptions = {
            "formal": "正式、专业,适合学术或商业环境",
            "casual": "轻松、随意,像朋友聊天一样",
            "humorous": "幽默风趣,能引起读者笑声",
            "technical": "技术性强,使用专业术语,适合专业人士",
            "inspirational": "励志、鼓舞人心,能激发读者积极性",
            "storytelling": "叙事性强,通过故事传达信息",
            "concise": "简洁明了,去除多余修饰,直截了当"
        }
        
        style_desc = style_descriptions.get(target_style, "保持原有风格")
        
        audience_note = f"目标受众是{target_audience}," if target_audience else ""
        
        system_prompt = """你是一位专业的内容编辑,擅长根据需求调整内容风格。
请在保持核心信息不变的前提下,调整内容的语调和风格。"""
        
        user_prompt = f"""请将以下内容调整为{target_style}风格:

{audience_note}目标风格描述:{style_desc}

原始内容:
{content}

请只输出调整后的内容,不要添加额外解释。"""
        
        return self.generate_content(user_prompt, system_prompt)
    
    def personalize_content(self, content: str, user_profile: Dict[str, Any]) -> str:
        """
        根据用户画像个性化内容
        
        Args:
            content: 原始内容
            user_profile: 用户画像字典,包含兴趣、偏好、背景等信息
            
        Returns:
            个性化后的内容
        """
        # 构建用户画像描述
        profile_desc = []
        for key, value in user_profile.items():
            profile_desc.append(f"{key}: {value}")
        
        profile_str = "\n".join(profile_desc)
        
        system_prompt = """你是一位内容个性化专家,擅长根据用户特点调整内容,使其更具相关性和吸引力。
请在保持核心信息完整的前提下,根据用户画像调整内容,使其更符合用户的兴趣和背景。"""
        
        user_prompt = f"""请根据以下用户画像个性化内容:

用户画像:
{profile_str}

原始内容:
{content}

请输出个性化后的内容,使其更贴近用户的兴趣和背景,但不要丢失原始内容的核心信息。"""
        
        return self.generate_content(user_prompt, system_prompt)
    
    def generate_multiple_versions(self, topic: str, num_versions: int = 3,
                                  styles: List[str] = None) -> List[Dict[str, Any]]:
        """
        生成多个不同风格的内容版本
        
        Args:
            topic: 内容主题
            num_versions: 版本数量
            styles: 风格列表,如果不提供则自动选择
            
        Returns:
            包含多个版本内容的列表
        """
        if styles is None:
            # 默认风格列表
            default_styles = ["formal", "casual", "technical", "storytelling", "humorous"]
            styles = default_styles[:num_versions]
        
        versions = []
        
        # 首先生成一个基础版本
        base_content = self.generate_structured_content(
            topic=topic,
            content_type="article",
            target_audience="general",
            tone="neutral",
            length="medium"
        )
        
        versions.append({
            "style": "original",
            "content": base_content
        })
        
        # 生成不同风格的版本
        for i, style in enumerate(styles[:num_versions-1]):
            styled_content = base_content.copy()
            styled_content["content"] = self.adjust_style(
                content=base_content["content"],
                target_style=style
            )
            styled_content["title"] = self.adjust_style(
                content=base_content["title"],
                target_style=style
            )
            
            versions.append({
                "style": style,
                "content": styled_content
            })
        
        return versions
内容质量评估与优化

为了确保我们生成的内容质量,我们需要添加内容质量评估和优化功能。这将帮助我们的Agent能够自我检查和改进生成的内容。

# src/agents/content_generator.py(续)
class ContentGenerator:
    # ... 之前的代码 ...
    
    def evaluate_content(self, content: str, criteria: List[str] = None) -> Dict[str, Any]:
        """
        评估内容质量
        
        Args:
            content: 待评估的内容
            criteria: 评估标准列表,可选
            
        Returns:
            包含各项评分和总体评价的字典
        """
        if criteria is None:
            criteria = [
                "准确性", "清晰度", "结构合理性", "原创性", 
                "吸引力", "语法正确性", "词汇丰富度"
            ]
        
        criteria_str = ", ".join(criteria)
        
        system_prompt = """你是一位专业的内容质量评估专家,擅长从多个维度评估内容质量。
请客观、公正地评估内容,并提供具体的改进建议。"""
        
        user_prompt = f"""请评估以下内容的质量,从以下维度进行评分(每项0-10分):{criteria_str}

内容:
{content}

请按照以下JSON格式输出评估结果:
{{
    "scores": {{
        "准确性": 分数,
        "清晰度": 分数,
        ...
    }},
    "overall_score": 总体平均分,
    "strengths": ["优点1", "优点2", ...],
    "weaknesses": ["缺点1", "缺点2", ...],
    "suggestions": ["改进建议1", "改进建议2", ...]
}}

请确保JSON格式正确,可以直接被解析。"""
        
        # 生成评估结果
        evaluation_str = self.generate_content(user_prompt, system_prompt)
        
        # 尝试解析JSON
        try:
            import json
            # 尝试提取JSON部分
            json_start = evaluation_str.find("{")
            json_end = evaluation_str.rfind("}") + 1
            if json_start != -1 and json_end != -1:
                evaluation_json = evaluation_str[json_start:json_end]
                evaluation = json.loads(evaluation_json)
            else:
                evaluation = {
                    "error": "无法解析评估结果",
                    "raw_output": evaluation_str
                }
        except Exception as e:
            evaluation = {
                "error": f"解析评估结果时出错: {str(e)}",
                "raw_output": evaluation_str
            }
        
        return evaluation
    
    def optimize_content(self, content: str, evaluation: Dict[str, Any] = None) -> str:
        """
        根据评估结果优化内容
        
        Args:
            content: 原始内容
            evaluation: 评估结果,如果不提供则先进行评估
            
        Returns:
            优化后的内容
        """
        # 如果没有提供评估结果,先进行评估
        if evaluation is None:
            evaluation = self.evaluate_content(content)
        
        # 构建优化提示词
        if "error" in evaluation:
            # 如果评估出错,使用通用优化提示
            system_prompt = """你是一位专业的内容编辑,擅长改进和优化内容质量。
请检查内容,找出可以改进的地方,并提供优化后的版本。"""
            
            user_prompt = f"""请优化以下内容,使其质量更高:

{content}

请输出优化后的完整内容。"""
        else:
            # 使用评估结果构建更具体的优化提示
            strengths = ", ".join(evaluation.get("strengths", []))
            weaknesses = ", ".join(evaluation.get("weaknesses", []))
            suggestions = "; ".join(evaluation.get("suggestions", []))
            
            system_prompt = """你是一位专业的内容编辑,擅长根据反馈改进和优化内容质量。
请在保持内容优点的同时,针对不足之处进行改进。"""
            
            user_prompt = f"""请根据以下反馈优化内容:

内容优点:{strengths}
内容不足:{weaknesses}
改进建议:{suggestions}

原始内容:
{content}

请输出优化后的完整内容,同时保持内容的核心信息不变。"""
        
        return self.generate_content(user_prompt, system_prompt)

现在,让我们更新我们的测试脚本来测试这些新功能:

# test_content_generator.py(续)
def test_style_adjustment():
    """测试风格调整"""
    generator = ContentGenerator()
    
    print("\n\n测试风格调整...")
    
    # 先生成一段基础内容
    base_content = generator.generate_content(
        prompt="请介绍人工智能的基本概念和应用场景,大约200字。",
        system_prompt="你是一位科技教育专家。"
    )
    
    print(f"\n原始内容:\n{base_content}")
    
    # 调整为不同风格
    styles = ["casual", "technical", "humorous"]
    for style in styles:
        styled_content = generator.adjust_style(
            content=base_content,
            target_style=style,
            target_audience="对AI感兴趣的年轻人"
        )
        print(f"\n\n{style}风格:\n{styled_content}")

def test_content_evaluation():
    """测试内容评估"""
    generator = ContentGenerator()
    
    print("\n\n测试内容评估...")
    
    # 生成一段内容
    content = generator.generate_content(
        prompt="请写一篇关于气候变化的短文,大约300字。"
    )
    
    print(f"\n待评估内容:\n{content}")
    
    # 评估内容
    evaluation = generator.evaluate_content(content)
    
    print(f"\n评估结果:")
    if "error" not in evaluation:
        print(f"总体评分:{evaluation.get('overall_score',
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐