跳到主要内容

从零到一:构建智能提示词应用

本教程将带您从零开始,构建一个完整的提示词工程应用。我们将创建一个智能提示词生成和管理平台,能够帮助用户创建、优化和管理提示词模板。

项目概述

功能特性

  • ✅ 提示词模板管理
  • ✅ 提示词优化建议
  • ✅ 多模型测试对比
  • ✅ 提示词版本控制
  • ✅ Web界面管理
  • ✅ API接口

技术栈

  • 后端:Python 3.11+ + FastAPI
  • 数据库:SQLite / PostgreSQL
  • LLM:OpenAI API / Anthropic Claude
  • 前端:React + TypeScript
  • 部署:Docker

第一步:环境准备

1.1 创建项目目录

mkdir prompt-manager
cd prompt-manager

1.2 安装依赖

创建 requirements.txt

fastapi>=0.104.0
uvicorn>=0.24.0
sqlalchemy>=2.0.0
pydantic>=2.5.0
openai>=1.0.0
anthropic>=0.7.0
python-dotenv>=1.0.0

第二步:实现核心功能

2.1 提示词模板模型

"""提示词模板模型"""
from sqlalchemy import Column, Integer, String, Text, DateTime, JSON
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime

Base = declarative_base()

class PromptTemplate(Base):
"""提示词模板"""
__tablename__ = "prompt_templates"

id = Column(Integer, primary_key=True)
name = Column(String(200), nullable=False)
category = Column(String(100))
template = Column(Text, nullable=False)
variables = Column(JSON) # 模板变量列表
description = Column(Text)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)

2.2 提示词优化器

"""提示词优化器"""
from openai import OpenAI
from typing import Dict, List

class PromptOptimizer:
"""提示词优化器"""

def __init__(self, api_key: str):
self.client = OpenAI(api_key=api_key)

def optimize(self, prompt: str, context: Dict = None) -> Dict:
"""优化提示词"""
optimization_prompt = f"""
分析以下提示词,并提供优化建议:

原始提示词:
{prompt}

请提供:
1. 优化后的提示词
2. 优化说明
3. 预期改进效果
"""

response = self.client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个提示词工程专家。"},
{"role": "user", "content": optimization_prompt}
],
temperature=0.7
)

return {
"optimized_prompt": response.choices[0].message.content,
"suggestions": self._extract_suggestions(response.choices[0].message.content)
}

def _extract_suggestions(self, content: str) -> List[str]:
"""提取优化建议"""
# 简单的建议提取逻辑
suggestions = []
lines = content.split('\n')
for line in lines:
if line.strip().startswith('-') or line.strip().startswith('•'):
suggestions.append(line.strip())
return suggestions

2.3 API接口

"""FastAPI应用"""
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional, List

app = FastAPI()

class PromptTemplateCreate(BaseModel):
name: str
category: Optional[str] = None
template: str
variables: Optional[List[str]] = None
description: Optional[str] = None

class PromptOptimizeRequest(BaseModel):
prompt: str
context: Optional[dict] = None

@app.post("/templates")
async def create_template(template: PromptTemplateCreate):
"""创建提示词模板"""
# 实现创建逻辑
pass

@app.post("/optimize")
async def optimize_prompt(request: PromptOptimizeRequest):
"""优化提示词"""
optimizer = PromptOptimizer(os.getenv("OPENAI_API_KEY"))
result = optimizer.optimize(request.prompt, request.context)
return result

第三步:部署

3.1 Dockerfile

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

总结

本教程展示了如何构建一个提示词管理平台,包括模板管理、优化建议等功能。您可以根据需求扩展更多功能。