第8章:生成式AI

生成式AI(Generative AI)是当前人工智能领域最热门的技术方向之一。从ChatGPT到Midjourney,生成式AI正在深刻改变内容创作的方式。本章将全面介绍文本生成、图像生成、多模态模型和代码生成等核心技术。

8.1 文本生成

文本生成是生成式AI最成熟的应用领域。基于大语言模型的文本生成系统可以完成写作、翻译、摘要、对话等多种任务。

8.1.1 主流文本生成模型对比

以下是当前主流的文本生成模型及其特点:

模型 上下文长度 主要优势 适用场景
GPT-4o 128K tokens 多模态、速度快、性价比高 通用对话、内容创作
GPT-4 Turbo 128K tokens 推理能力强、知识更新 复杂推理、长文档分析
Claude 3.5 Sonnet 200K tokens 长文本、代码能力强 代码生成、长文档处理
Claude 3 Opus 200K tokens 最强推理、创意写作 高难度任务、创作
文心一言4.0 8K tokens 中文优化、本土知识 中文场景、国内业务
通义千问Max 32K tokens 中文理解、数学推理 教育、数学问题
Gemini 1.5 Pro 1M tokens 超长上下文、多模态 视频分析、大规模文档

8.1.2 API调用示例

下面介绍如何使用主流模型的API进行文本生成:

OpenAI GPT-4 API调用(Python)
import openai

# 设置API密钥
openai.api_key = "your-api-key"

# 调用GPT-4进行对话
response = openai.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "你是一位专业的技术写作助手。"},
        {"role": "user", "content": "请帮我写一篇关于人工智能发展历程的短文,约500字。"}
    ],
    temperature=0.7,  # 创造性程度:0-2,越高越随机
    max_tokens=1000,  # 最大输出token数
    top_p=0.9        # 核采样参数
)

print(response.choices[0].message.content)
Claude API调用示例
import anthropic

client = anthropic.Anthropic(api_key="your-api-key")

message = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1000,
    temperature=0.7,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "请分析这段代码的潜在问题:\n\ndef divide(a, b):\n    return a / b"
                }
            ]
        }
    ]
)

print(message.content[0].text)
通义千问API调用示例
import dashscope

# 设置API密钥
dashscope.api_key = "your-api-key"

# 调用通义千问
response = dashscope.Generation.call(
    model="qwen-max",
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手。"},
        {"role": "user", "content": "请用一句话解释什么是机器学习。"}
    ],
    result_format='message'
)

print(response.output.choices[0].message.content)
API参数调优指南:
  • temperature:控制随机性,0.0为确定性输出,0.7-1.0适合创意任务
  • max_tokens:限制输出长度,避免生成过长内容
  • top_p:核采样,0.9-1.0适合大多数场景
  • presence_penalty:减少重复,0-2之间,创意写作可设为0.6
  • frequency_penalty:降低高频词概率,对话场景可设为0.5

8.2 图像生成

图像生成技术近年来取得了突破性进展,扩散模型(Diffusion Models)已成为当前主流的图像生成技术路线。

8.2.1 扩散模型原理

扩散模型的核心思想是通过逐步去噪的过程生成图像:

扩散模型工作原理:
  1. 前向扩散:逐步向原始图像添加高斯噪声,直到图像完全变成噪声
  2. 反向去噪:训练神经网络学习逆转这个过程,从噪声逐步恢复清晰图像
  3. 条件生成:通过文本提示(Text Prompt)引导生成特定内容的图像

扩散模型的关键技术组件:

  • U-Net架构:用于预测噪声的神经网络结构
  • 注意力机制:连接文本编码和图像生成过程
  • VAE(变分自编码器):在潜空间(Latent Space)进行高效生成
  • 调度器(Scheduler):控制去噪步数和强度

8.2.2 主流图像生成工具对比

工具 类型 特点 使用门槛
Stable Diffusion 开源模型 可本地部署、高度定制、社区生态丰富 较高(需配置环境)
DALL-E 3 商业API 文本理解准确、图像质量高、遵循提示词 低(通过API/ChatGPT)
Midjourney 商业服务 艺术风格独特、美学表现力强 中(Discord操作)
Adobe Firefly 商业服务 与Adobe生态集成、商用安全
文心一格 国内服务 中文提示词优化、本土化风格
通义万相 国内服务 中文理解好、多种艺术风格

8.2.3 API调用示例

DALL-E 3图像生成(Python)
import openai

client = openai.OpenAI(api_key="your-api-key")

response = client.images.generate(
    model="dall-e-3",
    prompt="一只穿着宇航服的橘猫在月球表面行走,背景是蓝色的地球,
            科幻风格,高清细节,电影级光影",
    size="1024x1024",
    quality="hd",        # 标准或高清
    n=1,                 # 生成数量
    style="vivid"        # vivid(生动)或natural(自然)
)

# 获取生成的图片URL
image_url = response.data[0].url
print(f"图片链接: {image_url}")
print(f"修正后的提示词: {response.data[0].revised_prompt}")
Stable Diffusion本地推理(Python)
from diffusers import StableDiffusionPipeline
import torch

# 加载模型
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(
    model_id,
    torch_dtype=torch.float16
)
pipe = pipe.to("cuda")  # 使用GPU

# 生成图像
prompt = "a beautiful landscape with mountains and lake, sunset, 
          digital art, highly detailed"
image = pipe(
    prompt,
    num_inference_steps=50,  # 推理步数
    guidance_scale=7.5       # 提示词遵循程度
).images[0]

# 保存图像
image.save("generated_image.png")

8.2.4 提示词技巧

高质量的提示词(Prompt)是获得满意图像的关键。以下是提示词编写的最佳实践:

提示词结构公式:

[主体描述] + [环境/背景] + [艺术风格] + [光照/氛围] + [画质修饰词]

提示词示例对比
【简单提示词】
a cat

【优化后的提示词】
一只毛茸茸的英国短毛猫(主体),
坐在窗台上(场景),
午后阳光透过窗户洒进来(光照),
温暖的日系摄影风格(风格),
8k超高清,柔和虚化背景(画质),
--ar 16:9(宽高比,Midjourney专用)
提示词优化技巧:
  • 具体描述:用详细的形容词描述主体特征
  • 参考艺术家:提及特定艺术家风格(如"宫崎骏风格")
  • 使用专业术语:如"景深"、"散景"、"逆光"等摄影术语
  • 负面提示词:使用negative prompt排除不想要的元素
  • 参数调节:调整CFG Scale(提示词强度)和步数

8.3 多模态模型

多模态模型能够同时处理和理解多种类型的数据(文本、图像、音频、视频),是AI向通用智能发展的重要方向。

8.3.1 主流多模态模型介绍

代表性多模态模型:
  • CLIP:OpenAI的视觉-语言预训练模型,连接图像和文本语义空间
  • GPT-4V/GPT-4o:具备强大的图像理解和分析能力
  • Claude 3系列:支持图像输入,擅长视觉问答和文档分析
  • Gemini:原生多模态架构,支持文本、图像、视频、音频
  • LLaVA:开源视觉语言助手,结合LLaMA和CLIP
  • Qwen-VL:阿里巴巴开源的视觉语言模型

8.3.2 视觉问答与图像理解

多模态模型的核心能力之一是视觉问答(Visual Question Answering),即根据图像内容回答文本问题。

GPT-4V视觉分析示例
import openai
import base64

# 将图片转为base64编码
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')

base64_image = encode_image("chart.png")

client = openai.OpenAI(api_key="your-api-key")

response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "请分析这张图表,告诉我:\n1. 图表展示什么数据\n2. 数据的主要趋势\n3. 有哪些关键数据点"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{base64_image}"
                    }
                }
            ]
        }
    ],
    max_tokens=500
)

print(response.choices[0].message.content)

8.3.3 多模态应用场景

应用场景 描述 典型模型
图像描述生成 自动生成图片的文字说明 BLIP、LLaVA
视觉问答 根据图片回答问题 GPT-4V、Gemini
OCR+理解 识别并理解图片中的文字内容 PaddleOCR+LLM
视频分析 理解视频内容,生成摘要 Gemini 1.5 Pro
文档理解 分析PDF、扫描件等文档 Claude 3、GPT-4V
图像编辑 根据文本指令编辑图片 InstructPix2Pix

8.4 代码生成

AI代码生成工具正在 revolutionize 软件开发的方式,从自动补全到完整函数生成,大幅提升开发效率。

8.4.1 主流AI编程工具

工具 开发商 主要功能 支持环境
GitHub Copilot GitHub/OpenAI 代码补全、函数生成、注释生成代码 VS Code、JetBrains等
Cursor Anysphere AI原生编辑器、代码聊天、智能重构 独立IDE
Codeium Codeium 免费代码补全、自然语言搜索 多IDE支持
Amazon CodeWhisperer AWS 代码建议、安全扫描 VS Code、JetBrains
Tabnine Tabnine 本地/云端模型、隐私优先 多IDE支持
通义灵码 阿里巴巴 中文注释理解、代码解释 VS Code、JetBrains

8.4.2 代码生成模型

除了商业工具,还有多个专门用于代码生成的大语言模型:

开源代码生成模型:
  • CodeT5/CodeT5+:专为代码理解和生成设计的编码器-解码器模型
  • CodeLlama:基于LLaMA微调的代码专用模型,支持多种编程语言
  • StarCoder:Hugging Face开源的代码生成模型,训练数据透明
  • DeepSeek-Coder:深度求索开源,在多个代码任务上表现优秀
  • WizardCoder:使用Evolve-Instruct微调的代码模型

8.4.3 API调用示例

使用GPT-4生成代码
import openai

client = openai.OpenAI(api_key="your-api-key")

def generate_code(prompt, language="python"):
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[
            {
                "role": "system",
                "content": f"你是一个专业的{language}程序员。请生成高质量、
                            带注释的代码,并解释关键逻辑。"
            },
            {"role": "user", "content": prompt}
        ],
        temperature=0.2  # 代码生成使用较低temperature
    )
    return response.choices[0].message.content

# 示例:生成代码
prompt = """请用Python编写一个函数,实现以下功能:
- 输入:一个包含嵌套字典和列表的复杂数据结构
- 输出:展平后的字典,键使用点号表示路径
- 要求:处理循环引用,添加类型注解"""

code = generate_code(prompt)
print(code)
使用Hugging Face生成代码
from transformers import AutoTokenizer, AutoModelForCausalLM

# 加载CodeLlama模型
model_name = "codellama/CodeLlama-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)

# 准备提示词
prompt = '''# 创建一个Python类来实现简单的缓存系统
# 要求:支持设置过期时间,线程安全
class Cache:'''

# 生成代码
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
    **inputs,
    max_new_tokens=200,
    temperature=0.2,
    do_sample=True
)

generated_code = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(generated_code)

8.4.4 AI辅助编程最佳实践

高效使用AI编程工具的建议:
  1. 明确需求:提供清晰的函数签名、输入输出示例和边界条件
  2. 逐步迭代:先生成框架,再逐步完善细节
  3. 代码审查:始终审查AI生成的代码,检查安全性和正确性
  4. 测试驱动:让AI先生成测试用例,再编写实现代码
  5. 上下文利用:提供相关代码片段帮助AI理解项目风格
  6. 文档生成:利用AI自动生成代码注释和文档
AI代码生成的注意事项:
  • 安全风险:AI可能生成包含漏洞的代码,特别是SQL注入、XSS等问题
  • 版权问题:注意训练数据的许可证兼容性
  • 过度依赖:保持对代码的理解,避免成为"提示词工程师"
  • 幻觉问题:AI可能生成不存在或错误的API调用

8.5 本章小结

本章全面介绍了生成式AI的核心应用领域:

  • 文本生成:了解主流大语言模型的特点,掌握API调用方法
  • 图像生成:理解扩散模型原理,熟练运用提示词技巧
  • 多模态模型:探索视觉问答等跨模态应用
  • 代码生成:善用AI编程工具,遵循最佳实践
展望未来:

生成式AI正在快速演进,未来的发展趋势包括:更高的生成质量、更低的计算成本、更强的多模态融合能力、更好的可控性和一致性,以及更完善的安全机制。建议读者持续关注这一领域的最新进展,不断实践和探索。