
30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近在AI圈子里一个关于“提示词”的讨论热度居高不下。起因是AI领域的知名专家Andrej Karpathy分享了一个非常精炼的“提示词”示例据称只有65行却引发了关于“提示词工程”本质的广泛思考。很多开发者看完后直呼这简直是把整个行业的“窗户纸”给捅破了。对于刚接触大语言模型LLM的开发者来说“提示词”可能还停留在“怎么问AI才答得好”的层面。但对于希望将AI能力深度集成到产品中的工程师而言如何设计稳定、高效、可维护的提示词已经成为一个核心的工程问题。本文将围绕Karpathy引发的这一讨论深入拆解“提示词工程”从概念到实战的完整体系。我们将不仅探讨那“65行代码”背后的思想更会构建一套从零开始、可复现的提示词开发与管理方案涵盖设计原则、代码实现、配置化管理和常见避坑指南目标是让你能系统化地掌握这项日益重要的工程技能。1. 提示词工程从“技巧”到“工程”在深入具体代码之前我们有必要厘清几个核心概念理解为什么“提示词”需要被“工程化”。1.1 什么是提示词在最简单的层面上提示词就是你输入给大语言模型的一段文本用以引导模型产生你期望的输出。例如“请用Python写一个快速排序函数”就是一个提示词。然而随着应用深入提示词变得复杂。它可能包含指令明确告诉模型要做什么。上下文提供背景信息让模型回答更精准。输入数据需要模型处理的具体内容。输出指示规定输出的格式、风格或结构。这种结构化的文本其设计和优化过程就是提示词工程。它不再是随意的提问而是一种与模型交互的、可重复、可优化的编程接口。1.2 Skill vs. 提示词一个重要的区分在Karpathy的讨论中他特别区分了“Skill”和“提示词”。提示词通常指单次交互中使用的、相对静态的文本模板。它可能很长、很复杂但本质上是“数据”是模型的输入。Skill可以理解为一种“元能力”或“可复用的交互模式”。一个Skill可能由多个步骤、条件判断、对模型输出的解析以及后续的提示词组合构成。它更接近一个“函数”或“工作流”而提示词则是这个函数内部的“字符串参数”。例如一个“代码审查Skill”可能包含1提取代码变更2调用代码分析提示词3解析模型返回的建议4根据严重程度过滤建议5格式化输出报告。这里的步骤2中的“代码分析提示词”就是一个具体的提示词。理解这个区别至关重要。当我们谈论“65行提示词扒光行业”时更深层的含义可能是一个精心设计的、极简的“Skill”或提示词结构揭示了构建可靠AI应用的核心模式而非堆砌复杂的指令。1.3 为什么需要工程化可维护性散落在代码各处的魔法字符串难以更新和调试。可测试性格式固定的提示词便于进行单元测试和效果评估。版本控制提示词本身也需要像代码一样进行版本管理和迭代。协作与共享团队需要统一的范式来设计和复用提示词。性能与成本低效的提示词会导致不必要的长上下文增加API调用成本和延迟。接下来我们就从环境准备开始搭建一个可以实践这些理念的工程框架。2. 环境准备与项目初始化我们将使用Python作为主要语言因为它拥有最丰富的AI开发生态。本项目将模拟一个简单的“文本处理助手”应用通过它来演示提示词工程的全流程。2.1 基础环境操作系统Windows 10/11, macOS, 或 Linux (Ubuntu 20.04)Python版本3.8 或 3.9推荐3.9兼容性最好包管理工具pipIDEVS Code, PyCharm 或任何你熟悉的编辑器2.2 创建项目与虚拟环境首先创建一个干净的项目目录并设置虚拟环境这是管理依赖的最佳实践。# 创建项目目录 mkdir prompt-engineering-demo cd prompt-engineering-demo # 创建虚拟环境 (以Python3.9为例) python3.9 -m venv venv # 激活虚拟环境 # Windows (PowerShell) .\venv\Scripts\Activate.ps1 # macOS/Linux source venv/bin/activate激活后命令行提示符前应显示(venv)。2.3 安装核心依赖我们将安装几个核心库openai用于调用大模型APIpydantic用于数据验证和设置管理python-dotenv用于管理环境变量如API密钥。pip install openai pydantic python-dotenv为了示例完整我们还会安装typing-extensions和colorama用于彩色输出但这些不是必须的。pip install typing-extensions colorama2.4 项目结构规划一个清晰的目录结构有助于管理提示词和相关配置。prompt-engineering-demo/ ├── .env # 存储敏感信息如API密钥切勿提交到Git ├── .gitignore # Git忽略文件 ├── requirements.txt # 项目依赖列表 ├── src/ # 源代码目录 │ ├── __init__.py │ ├── config.py # 配置管理 │ ├── prompts/ # 提示词模板目录 │ │ ├── __init__.py │ │ ├── system_prompts.py # 系统级提示词 │ │ └── task_prompts.py # 任务级提示词 │ ├── skills/ # Skill实现目录 │ │ ├── __init__.py │ │ └── text_analyzer.py # 示例Skill文本分析 │ ├── models.py # 数据模型如请求/响应结构 │ └── main.py # 主程序入口 └── tests/ # 测试目录 └── test_prompts.py # 提示词测试现在基础环境已经就绪。我们先来管理最关键的配置——API密钥。3. 配置管理与安全实践安全地管理API密钥是生产级应用的第一步。永远不要将密钥硬编码在代码中。3.1 设置环境变量在项目根目录创建.env文件# .env OPENAI_API_KEYsk-your-actual-openai-api-key-here OPENAI_BASE_URLhttps://api.openai.com/v1 # 如果是其他兼容API可修改 MODEL_NAMEgpt-3.5-turbo # 默认使用的模型重要将.env添加到.gitignore文件中确保它不会被意外提交到版本控制系统。# .gitignore .env venv/ __pycache__/ *.pyc3.2 创建配置管理模块接下来我们使用pydantic创建一个强类型的配置管理类。pydantic会在应用启动时验证配置避免运行时错误。# src/config.py import os from typing import Optional from pydantic import BaseSettings, Field from dotenv import load_dotenv # 加载.env文件中的环境变量 load_dotenv() class Settings(BaseSettings): 应用配置从环境变量读取。 openai_api_key: str Field(..., envOPENAI_API_KEY) openai_base_url: str Field(https://api.openai.com/v1, envOPENAI_BASE_URL) model_name: str Field(gpt-3.5-turbo, envMODEL_NAME) # 可以添加其他配置如温度、最大token数等 temperature: float Field(0.7, ge0.0, le2.0) # 温度值在0到2之间 max_tokens: Optional[int] Field(500) # 最大生成token数可选 class Config: env_file .env case_sensitive False # 环境变量不区分大小写 # 创建全局配置实例 settings Settings() # 一个简单的验证函数 def validate_config(): if not settings.openai_api_key or settings.openai_api_key.startswith(sk-): # 这里只是简单检查实际生产环境需要更严格的验证 print(配置加载成功。) else: print(警告API密钥格式可能不正确。)这个Settings类定义了应用所需的所有配置项并指定了默认值和验证规则如temperature的范围。通过settings Settings()实例化后就可以在代码中通过settings.openai_api_key等方式安全地访问配置了。4. 提示词模板的设计与实现这是提示词工程的核心。我们将告别字符串拼接采用模板化的方式管理提示词。4.1 定义提示词模板基类首先我们创建一个基础的提示词模板类它负责管理角色如 system, user, assistant和消息内容。# src/models.py from typing import List, Literal, Optional from pydantic import BaseModel class Message(BaseModel): 表示对话中的一条消息。 role: Literal[system, user, assistant] content: str class PromptTemplate(BaseModel): 提示词模板基类。 name: str # 模板名称 description: str # 模板描述 messages: List[Message] # 消息列表构成一个对话上下文 def format(self, **kwargs) - List[Message]: 格式化模板用传入的关键字参数替换模板中的占位符。 Args: **kwargs: 用于替换模板内容中 {key} 格式占位符的键值对。 Returns: 格式化后的消息列表。 formatted_messages [] for msg in self.messages: # 使用 str.format 安全地替换占位符 try: formatted_content msg.content.format(**kwargs) except KeyError as e: raise ValueError(f提示词模板 {self.name} 格式化失败: 缺少参数 {e}) formatted_messages.append(Message(rolemsg.role, contentformatted_content)) return formatted_messagesPromptTemplate类有两个关键部分数据结构用messages列表来模拟Chat API所需的消息格式。格式化方法format方法允许我们像使用Python的str.format一样在提示词中定义占位符如{topic}并在使用时传入具体值。这实现了提示词的参数化和复用。4.2 创建具体的提示词模板现在让我们在prompts目录下创建一些具体的模板。首先是一个系统提示词它定义了AI助手的身份和行为准则。# src/prompts/system_prompts.py from src.models import PromptTemplate, Message # 定义一个通用的、有帮助的AI助手系统提示词 SYSTEM_PROMPT_GENERIC PromptTemplate( namesystem_generic, description一个通用、有帮助、无害的AI助手系统指令。, messages[ Message( rolesystem, content你是一个有帮助的AI助手。请根据用户的请求提供准确、清晰、简洁的回答。 如果一个问题超出你的知识范围或涉及不适当的内容请礼貌地拒绝并说明原因。 请尽可能使用结构化的格式如列表、代码块来组织你的回答以提高可读性。 ) ] )接下来创建任务级的提示词模板。例如一个用于“文本总结”的模板。# src/prompts/task_prompts.py from src.models import PromptTemplate, Message # 文本总结提示词模板 PROMPT_SUMMARIZE PromptTemplate( namesummarize_text, description将给定的文本总结为指定长度的摘要。, messages[ Message(rolesystem, content{system_context}), # 可以嵌入系统提示词 Message( roleuser, content请将以下文本总结为一个简洁的摘要。 要求 1. 摘要长度大约为 {summary_length} 字。 2. 保留原文的核心事实和观点。 3. 语言流畅自成一段。 待总结的文本{text}请开始你的总结 ) ] ) # 文本情感分析提示词模板 PROMPT_SENTIMENT PromptTemplate( nameanalyze_sentiment, description分析给定文本的情感倾向积极/消极/中性。, messages[ Message(rolesystem, content{system_context}), Message( roleuser, content请分析以下文本的情感倾向。 请严格按以下JSON格式输出不要输出任何其他内容 {{ sentiment: positive|negative|neutral, confidence: 一个0到1之间的小数, key_phrases: [短语1, 短语2, ...] }} 待分析的文本{text}) ] )注意PROMPT_SENTIMENT模板它明确要求模型输出结构化数据JSON。这是提示词工程中的一个高级技巧极大地简化了后端对模型输出的解析过程使AI的输出更容易被程序化处理。5. 构建可复用的Skill回忆之前对Skill和提示词的区分。现在我们来构建一个TextAnalyzerSkill它封装了使用上述提示词模板与LLM交互的完整逻辑。5.1 实现LLM客户端首先创建一个简单的、基于配置的LLM客户端。# src/llm_client.py import openai from typing import List, Dict, Any, Optional from src.config import settings from src.models import Message import json class LLMClient: 一个简单的OpenAI API客户端封装。 def __init__(self): self.client openai.OpenAI( api_keysettings.openai_api_key, base_urlsettings.openai_base_url, ) self.model settings.model_name self.temperature settings.temperature self.max_tokens settings.max_tokens def chat_completion( self, messages: List[Dict[str, str]], temperature: Optional[float] None, max_tokens: Optional[int] None, response_format: Optional[Dict[str, Any]] None, ) - str: 调用Chat Completion API。 Args: messages: 消息列表格式为 [{role: user, content: ...}, ...] temperature: 生成温度覆盖默认配置。 max_tokens: 最大token数覆盖默认配置。 response_format: 指定响应格式例如 {type: json_object}。 Returns: 模型返回的消息内容字符串。 try: response self.client.chat.completions.create( modelself.model, messagesmessages, temperaturetemperature or self.temperature, max_tokensmax_tokens or self.max_tokens, response_formatresponse_format, ) return response.choices[0].message.content except openai.APIError as e: # 处理API错误例如超时、额度不足等 raise Exception(fOpenAI API调用失败: {e}) except Exception as e: # 处理其他意外错误 raise Exception(f生成请求时发生未知错误: {e})5.2 实现TextAnalyzerSkill现在我们将提示词模板和LLM客户端组合成一个完整的Skill。# src/skills/text_analyzer.py from typing import Dict, Any, Optional from src.llm_client import LLMClient from src.prompts.system_prompts import SYSTEM_PROMPT_GENERIC from src.prompts.task_prompts import PROMPT_SUMMARIZE, PROMPT_SENTIMENT import json class TextAnalyzerSkill: 文本分析Skill封装了总结和情感分析等能力。 def __init__(self, llm_client: Optional[LLMClient] None): self.llm_client llm_client or LLMClient() # 获取通用系统提示词的内容作为后续模板的默认上下文 self.default_system_context SYSTEM_PROMPT_GENERIC.messages[0].content def summarize( self, text: str, summary_length: int 100, system_context: Optional[str] None ) - str: 总结文本。 Args: text: 待总结的文本。 summary_length: 期望的摘要长度字。 system_context: 自定义系统指令为None则使用默认。 Returns: 总结后的文本。 # 1. 准备参数 params { system_context: system_context or self.default_system_context, text: text, summary_length: summary_length, } # 2. 格式化提示词模板 formatted_messages PROMPT_SUMMARIZE.format(**params) # 将Message对象转换为API所需的字典格式 api_messages [msg.dict() for msg in formatted_messages] # 3. 调用LLM summary self.llm_client.chat_completion(api_messages) # 4. 返回结果这里可以进行后处理如清理空白字符 return summary.strip() def analyze_sentiment( self, text: str, system_context: Optional[str] None ) - Dict[str, Any]: 分析文本情感返回结构化数据。 Args: text: 待分析的文本。 system_context: 自定义系统指令。 Returns: 包含情感、置信度和关键短语的字典。 params { system_context: system_context or self.default_system_context, text: text, } formatted_messages PROMPT_SENTIMENT.format(**params) api_messages [msg.dict() for msg in formatted_messages] # 关键要求模型返回JSON格式 response_format {type: json_object} response_text self.llm_client.chat_completion( api_messages, response_formatresponse_format ) try: # 解析JSON响应 result json.loads(response_text) # 可以在这里添加验证确保结果包含预期的字段 required_keys [sentiment, confidence, key_phrases] if not all(key in result for key in required_keys): raise ValueError(模型返回的JSON缺少必需字段。) return result except json.JSONDecodeError as e: raise ValueError(f无法解析模型返回的JSON: {e}. 原始响应: {response_text})这个TextAnalyzerSkill类展示了Skill的典型结构初始化接收或创建依赖如LLMClient。方法封装每个公开方法如summarize,analyze_sentiment对应一个具体的用户任务。内部流程参数准备收集所有必要输入。提示词渲染使用模板和参数生成最终的消息列表。调用LLM通过客户端与模型交互。结果解析与后处理处理模型返回的原始文本如解析JSON清理格式。错误处理在关键步骤如JSON解析添加了异常捕获使Skill更健壮。6. 完整实战运行你的第一个AI Skill让我们编写一个主程序将以上所有部分串联起来并处理可能出现的错误。6.1 编写主程序# src/main.py import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from src.config import validate_config, settings from src.skills.text_analyzer import TextAnalyzerSkill from colorama import init, Fore, Style # 初始化colorama用于彩色输出Windows需要 init(autoresetTrue) def main(): 主函数演示TextAnalyzerSkill的使用。 print(Fore.CYAN 提示词工程实战演示 Style.RESET_ALL) # 1. 验证配置 try: validate_config() print(Fore.GREEN ✓ 配置验证通过。 Style.RESET_ALL) except Exception as e: print(Fore.RED f✗ 配置错误: {e} Style.RESET_ALL) print(请检查 .env 文件是否正确设置 OPENAI_API_KEY。) return # 2. 初始化Skill try: analyzer TextAnalyzerSkill() print(Fore.GREEN ✓ TextAnalyzerSkill 初始化成功。 Style.RESET_ALL) except Exception as e: print(Fore.RED f✗ Skill初始化失败: {e} Style.RESET_ALL) return # 3. 准备测试文本 sample_text 人工智能AI在过去十年取得了惊人的进步。从图像识别到自然语言处理AI技术正在深刻改变许多行业。 然而伴随着机遇而来的是挑战例如伦理问题、就业市场影响和对技术滥用的担忧。 许多专家呼吁在发展AI的同时必须建立相应的治理框架和伦理准则。 print(Fore.YELLOW \n测试文本 Style.RESET_ALL) print(sample_text[:200] ...) # 只打印前200字符 # 4. 演示文本总结 print(Fore.CYAN \n--- 演示1: 文本总结 --- Style.RESET_ALL) try: summary analyzer.summarize(sample_text, summary_length50) print(Fore.GREEN 总结结果 Style.RESET_ALL) print(summary) except Exception as e: print(Fore.RED f总结失败: {e} Style.RESET_ALL) # 5. 演示情感分析 print(Fore.CYAN \n--- 演示2: 情感分析结构化输出--- Style.RESET_ALL) try: sentiment_result analyzer.analyze_sentiment(sample_text) print(Fore.GREEN 情感分析结果 Style.RESET_ALL) # 美化打印字典 import pprint pprint.pprint(sentiment_result, indent2) except Exception as e: print(Fore.RED f情感分析失败: {e} Style.RESET_ALL) print(Fore.CYAN \n 演示结束 Style.RESET_ALL) if __name__ __main__: main()6.2 运行与验证在项目根目录下运行主程序python src/main.py如果一切配置正确你将看到类似以下的输出 提示词工程实战演示 ✓ 配置验证通过。 ✓ TextAnalyzerSkill 初始化成功。 测试文本 人工智能AI在过去十年取得了惊人的进步。从图像识别到自然语言处理AI技术正在深刻改变许多行业。 然而伴随着机遇而来的是挑战例如伦理问题、就业... --- 演示1: 文本总结 --- 总结结果 人工智能发展迅速改变各行业但也带来伦理、就业等挑战需建立治理框架。 --- 演示2: 情感分析结构化输出--- 情感分析结果 { confidence: 0.85, key_phrases: [ 惊人的进步, 深刻改变, 伦理问题, 治理框架 ], sentiment: neutral } 演示结束 恭喜你已经成功运行了一个结构清晰、可维护的提示词工程化项目。TextAnalyzerSkill不仅完成了任务还以结构化的JSON格式返回了情感分析结果这比处理一段自由文本要可靠得多。7. 进阶提示词配置化与动态管理在真实项目中提示词可能需要动态调整、A/B测试或由非工程师如产品经理修改。将提示词存储在代码之外如数据库、配置文件是更佳实践。7.1 使用YAML管理提示词模板我们可以将提示词模板定义在YAML文件中实现配置与代码分离。首先安装PyYAMLpip install pyyaml。创建文件prompt_templates.yaml# prompt_templates.yaml prompts: summarize_text: name: summarize_text description: 将给定的文本总结为指定长度的摘要。 messages: - role: system content: {system_context} - role: user content: | 请将以下文本总结为一个简洁的摘要。 要求 1. 摘要长度大约为 {summary_length} 字。 2. 保留原文的核心事实和观点。 3. 语言流畅自成一段。 待总结的文本 {text} 请开始你的总结 analyze_sentiment: name: analyze_sentiment description: 分析给定文本的情感倾向积极/消极/中性。 messages: - role: system content: {system_context} - role: user content: | 请分析以下文本的情感倾向。 请严格按以下JSON格式输出不要输出任何其他内容 {{ sentiment: positive|negative|neutral, confidence: 一个0到1之间的小数, key_phrases: [短语1, 短语2, ...] }} 待分析的文本 {text} 7.2 创建提示词仓库Repository然后创建一个类来加载和管理这些YAML配置。# src/prompts/repository.py import yaml from pathlib import Path from typing import Dict from src.models import PromptTemplate, Message class PromptRepository: 从YAML文件加载和管理提示词模板的仓库。 def __init__(self, yaml_file_path: str): self.file_path Path(yaml_file_path) self._templates: Dict[str, PromptTemplate] {} self._load_templates() def _load_templates(self): 从YAML文件加载模板。 if not self.file_path.exists(): raise FileNotFoundError(f提示词模板文件未找到: {self.file_path}) with open(self.file_path, r, encodingutf-8) as f: data yaml.safe_load(f) for prompt_key, prompt_data in data.get(prompts, {}).items(): messages [ Message(rolemsg[role], contentmsg[content]) for msg in prompt_data[messages] ] template PromptTemplate( nameprompt_data[name], descriptionprompt_data.get(description, ), messagesmessages ) self._templates[prompt_key] template def get_template(self, name: str) - PromptTemplate: 根据名称获取提示词模板。 template self._templates.get(name) if not template: raise KeyError(f未找到名为 {name} 的提示词模板。) return template def list_templates(self) - Dict[str, str]: 列出所有可用的模板及其描述。 return {name: template.description for name, template in self._templates.items()}现在你可以在Skill中这样使用仓库# 在Skill的初始化中 self.prompt_repo PromptRepository(prompt_templates.yaml) summary_template self.prompt_repo.get_template(summarize_text) formatted_messages summary_template.format(system_context..., text..., summary_length...)这种方式使得提示词的修改无需重新部署代码只需更新YAML文件并重新加载即可极大地提升了灵活性和可维护性。8. 常见问题、调试与优化在实际开发中你一定会遇到各种问题。下面是一些常见场景及其解决思路。8.1 常见错误与排查问题现象可能原因排查步骤与解决方案API调用失败认证错误1. API密钥错误或过期。2. 环境变量未正确加载。3. Base URL配置错误如使用第三方代理。1. 检查.env文件中的OPENAI_API_KEY是否正确。2. 在代码中打印settings.openai_api_key的前几位勿打印完整密钥确认已加载。3. 确认OPENAI_BASE_URL是否指向正确的终端。模型返回无关内容或格式错误1. 系统提示词不够明确。2. 用户提示词指令模糊。3. 未指定response_format对于JSON输出。1. 强化系统提示词明确角色和边界。2. 在用户提示词中使用更精确的指令如“请严格按以下格式输出”。3. 对于JSON输出务必在API调用中设置response_format{type: json_object}并且确保系统或用户消息中提到了JSON。提示词格式化报错KeyError提示词模板中的占位符{key}在调用format()时未提供对应的参数。1. 检查调用format()时传入的关键字参数是否覆盖了模板中所有{}占位符。2. 使用template.messages[0].content打印原始模板内容进行核对。输出结果不稳定时好时坏1.temperature参数过高导致随机性大。2. 提示词本身存在歧义。1. 对于需要确定输出的任务如分类、提取将temperature设为0或接近0如0.1。2. 优化提示词减少歧义提供更清晰的示例Few-Shot Prompting。处理长文本时被截断或遗忘输入文本超过了模型上下文窗口或关键信息在上下文中位置太靠后。1. 对于超长文本先进行分块处理再对每块总结或分析最后聚合结果。2. 在提示词中明确要求模型“关注后半部分关于XX的论述”。3. 考虑使用具有更长上下文窗口的模型。8.2 提示词优化技巧角色扮演在系统提示词中为模型赋予一个具体的、专业的角色如“你是一位资深软件架构师”这能显著提升其在特定领域的表现。结构化输出如示例所示明确要求模型输出JSON、XML、Markdown表格等格式这是实现“程序化”交互的关键。少样本提示在提示词中提供1-3个输入输出的例子能极大地引导模型理解你的任务格式和期望。# 在提示词中嵌入示例 content 请将中文句子翻译成英文并标注情感。 示例 输入今天天气真好我很开心。 输出{translation: The weather is so nice today, Im very happy., sentiment: positive} 现在请翻译 输入{user_input} 输出 链式思考对于复杂推理任务提示模型“一步一步思考”或者要求它先输出思考过程再给出最终答案。后处理验证永远不要完全信任模型的输出。对于关键任务如执行数据库操作必须对输出进行程序化验证如检查JSON结构、字段类型、值范围或人工复核。8.3 性能与成本考量缓存对于相同输入可能产生相同输出的场景如temperature0时的翻译可以考虑缓存结果减少API调用。批处理如果有多条独立文本需要处理查看API是否支持批处理请求这通常比循环调用更高效、更便宜。Token计数在发送请求前可以粗略估算输入token数例如1个中文字符约等于1-2个token。避免发送不必要的上下文以控制成本。模型选择在效果可接受的前提下优先选择更便宜、更快的模型如gpt-3.5-turbo而非gpt-4。9. 工程最佳实践总结回顾整个项目我们可以提炼出以下提示词工程的最佳实践这也是对Karpathy所提及的“极简主义”和“工程化”思想的实践分离关注点将提示词数据与业务逻辑代码分离。使用模板和仓库来管理提示词。参数化与复用通过format方法将提示词中的变量参数化提高复用性。结构化输出尽可能要求模型返回结构化数据JSON/XML这是连接AI能力与业务系统的桥梁。强类型与验证使用pydantic等工具对配置、输入、输出进行验证提前发现错误。集中配置管理API密钥、模型参数等敏感和易变配置通过环境变量和配置文件管理。构建可测试的单元将Skill设计成独立的、可注入依赖的类便于编写单元测试。完善的错误处理在API调用、数据解析等环节进行异常捕获和友好提示。版本控制对提示词模板文件如YAML也进行Git版本控制记录每次变更。持续迭代将提示词视为产品功能的一部分根据实际效果和数据如人工评估、用户反馈进行持续优化和A/B测试。通过这套工程化的方法提示词不再是散落在代码各处的“魔法字符串”而变成了可管理、可测试、可迭代的软件组件。这不仅能提升开发效率更能保证AI应用在生产环境中的稳定性和可靠性。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度