2021-10-05 20:38:24
生成式AI(GenAI)项目结构指南(实战可落地)以下是一套标准化、模块化的GenAI项目模板,涵盖目录设计、核心文件、最佳实践及启动流程,适用于团队协作与长期维护。
一、目录结构总览generative_ai_project/├─ config/ # 配置文件(YAML格式)│ ├─ model_config.yaml # 模型参数(温度、token限制等)│ ├─ prompt_templates.yaml # 提示词模板库│ └─ logging_config.yaml # 日志级别与输出路径├─ src/ # 核心业务逻辑│ ├─ llm/ # 模型客户端封装(OpenAI/Claude/本地)│ ├─ prompt_engineering/ # 提示词优化(模板、Few-shot示例)│ ├─ utils/ # 工具库(日志、缓存、限流)│ └─ handlers/ # 统一错误处理与重试机制├─ data/ # 数据与中间结果│ ├─ cache/ # API响应缓存(JSON/Pickle)│ ├─ prompts/ # 提示词版本管理(按任务分类)│ ├─ outputs/ # 生成结果(按日期/任务归档)│ └─ embeddings/ # 向量化数据(可选)├─ examples/ # 最小可运行示例├─ notebooks/ # 实验与分析(Jupyter Notebook)├─ requirements.txt # Python依赖列表├─ README.md # 项目文档(架构图、启动步骤)├─ Dockerfile # 容器化配置(Python版本、CUDA)└─ setup.py # 包安装配置(支持多项目复用)关键设计原则
llm/:统一模型接口,支持A/B测试与故障回退。
utils/:封装日志、缓存、限流等通用功能。
cache/:减少重复API调用,降低延迟与成本。
prompts/:版本化提示词(如v1/prompt.yaml),支持回滚与对比。
requirements.txt
固定依赖版本,推荐配合uv或poetry管理环境,例如:
openai>=1.0.0pandas>=2.0.0python-dotenv>=1.0.0README.md
包含以下内容:
架构图(推荐使用Mermaid或Draw.io生成)。
启动步骤(如pip install -r requirements.txt)。
评测方法(自动化指标+人工问卷)。
变更记录(Changelog)。
Dockerfile
锁定运行时环境,确保训练/推理可复现,例如:
FROM python:3.10-slimWORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .CMD ["python", "src/examples/basic_completion.py"]setup.py
将src/打包为内部库,支持多项目复用,例如:
from setuptools import setup, find_packagessetup(name="genai_utils", packages=find_packages(where="src"))内存缓存:functools.lru_cache(适用于小规模数据)。
本地缓存:cache/目录存储JSON/Pickle文件。
云缓存:Redis(适用于分布式系统)。
质量监控
自动化评测:在eval/目录下实现BLEU、Rouge等指标计算。
人工问卷:通过Gradio或Streamlit搭建对比界面,收集用户反馈。
成本控制
Token统计:记录每次请求的输入/输出token数。
缓存命中率:监控cache/目录的使用频率。
周报看板:使用Pandas或Metabase生成成本与质量趋势图。
提示词版本化
目录结构:prompts/<task>/<vX>/prompt.yaml,例如:
prompts/├─ summarization/│ ├─ v1/prompt.yaml│ └─ v2/prompt.yaml└─ qa/ └─ v1/prompt.yaml链式推理
将复杂任务拆分为多个步骤,中间态持久化到data/,例如:
step1_result = step1(input_data)save_to_disk(step1_result, "data/intermediate/step1.json")step2_result = step2(step1_result)可观测性
接入OpenTelemetry或自定义埋点,追踪请求链路、成本与错误率。
通过以上结构与实践,团队可快速搭建可维护、可扩展的GenAI项目,同时平衡质量与成本。