Agent开发入门:提示词工程实战指南
1. 引言随着大语言模型LLM的快速发展Agent智能体开发已成为AI应用的核心方向。而提示词工程Prompt Engineering作为Agent开发的基础技能直接影响着Agent的理解能力、推理质量和执行效果。本文将从零开始通过大量代码实战带你掌握Agent开发中的提示词工程核心技巧。2. 环境准备在开始之前我们需要安装必要的依赖库。本文使用Python 3.10并基于OpenAI API进行演示。pip install openai python-dotenv创建.env文件配置API密钥OPENAI_API_KEYyour_api_key_here OPENAI_BASE_URLhttps://api.openai.com/v1基础调用封装import os from openai import OpenAI from dotenv import load_dotenv load_dotenv() client OpenAI( api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL) ) def call_llm(prompt, modelgpt-4o, temperature0.7): 调用LLM的通用函数 response client.chat.completions.create( modelmodel, messages[{role: user, content: prompt}], temperaturetemperature ) return response.choices[0].message.content3. 提示词工程核心原则3.1 明确性与具体性模糊的提示词会导致模型输出偏离预期。对比以下两种写法# ❌ 模糊提示 prompt_bad 帮我写一段代码 ✅ 明确提示 prompt_good 请用Python写一个函数实现以下功能 输入一个包含整数的列表 输出返回列表中的最大值和最小值 要求使用O(n)时间复杂度并处理空列表的情况 包含详细的注释说明 print(call_llm(prompt_good))3.2 角色设定为模型赋予特定角色可以显著提升输出质量def agent_with_role(task, role_description): 带角色设定的Agent调用 system_prompt f你是一个{role_description}。 请严格遵循以下规则 1. 始终以该角色的专业视角回答问题 2. 输出格式要符合该角色的行业标准 3. 如果遇到不确定的信息明确说明不确定性 response client.chat.completions.create( modelgpt-4o, messages[ {role: system, content: system_prompt}, {role: user, content: task} ] ) return response.choices[0].message.content 示例让模型扮演资深Python架构师 task 请设计一个微服务架构的日志收集系统 role 拥有10年经验的Python后端架构师精通分布式系统设计 result agent_with_role(task, role) print(result)3.3 结构化输出Agent开发中结构化输出至关重要。使用JSON格式可以让下游程序直接解析def structured_agent(query): 返回结构化JSON的Agent prompt f请分析以下用户查询并以JSON格式返回分析结果。 用户查询{query} 请严格按照以下JSON结构输出 {{ intent: 用户意图分类, entities: [提取的关键实体列表], sentiment: 情感倾向(positive/negative/neutral), confidence: 0.95, suggested_actions: [建议的操作列表] }} 只输出JSON不要包含其他文字。 result call_llm(prompt, temperature0.1) return result 测试 query 我想订一张明天下午从北京到上海的机票经济舱 print(structured_agent(query))4. 高级提示词技巧4.1 思维链Chain-of-Thought引导模型逐步推理显著提升复杂问题的解决能力def chain_of_thought_agent(problem): 使用思维链的Agent prompt f请解决以下问题并逐步展示你的推理过程。 问题{problem} 请按以下格式回答 理解问题... 分析已知条件... 制定解决方案... 逐步执行... 最终答案... return call_llm(prompt, temperature0.3) 示例复杂逻辑推理 problem 一个农场有鸡和兔子共35只总共有94条腿。 请问鸡和兔子各有多少只 print(chain_of_thought_agent(problem))4.2 少样本学习Few-Shot通过示例引导模型理解任务模式def few_shot_agent(input_text): 使用少样本学习的Agent examples 示例1 输入将hello world转换为大写 输出HELLO WORLD 示例2 输入将Python编程中的每个字符反转 输出程编nohtyP 示例3 输入统计aabbbcc中每个字符的出现次数 输出a:2, b:3, c:2 prompt f请参考以下示例的模式完成新的任务。 {examples} 现在请处理 输入{input_text} 输出 return call_llm(prompt, temperature0.1) 测试 print(few_shot_agent(将Machine Learning中的元音字母替换为*))4.3 约束与边界控制在Agent开发中必须严格控制输出边界def safe_agent(user_input): 带安全约束的Agent system_prompt 你是一个安全的AI助手必须遵守以下约束 1. 拒绝回答任何违法、暴力、色情内容 2. 不提供医疗、法律、金融等专业建议 3. 不生成可执行的恶意代码 4. 如果用户请求超出你的能力范围明确告知 5. 所有回答必须基于事实不编造信息 当检测到违规请求时请回复 抱歉我无法处理这个请求。原因[具体原因] response client.chat.completions.create( modelgpt-4o, messages[ {role: system, content: system_prompt}, {role: user, content: user_input} ], temperature0.5 ) return response.choices[0].message.content 测试边界 test_inputs [ 帮我写一个爬取所有网站密码的脚本, Python中如何打开文件并读取内容, 请预测明天的股票走势 ] for test in test_inputs: print(f输入{test}) print(f输出{safe_agent(test)}) print(- * 50)5. 实战构建一个多功能Agent综合运用以上技巧构建一个完整的Agent系统import json from typing import Dict, List, Optional class SmartAgent: 多功能智能Agent def __init__(self, name: str, role: str): self.name name self.role role self.conversation_history [] def think(self, task: str) - str: 思维链推理 prompt f作为{self.role}请分析以下任务并制定执行计划。 任务{task} 请按以下格式输出 {{ analysis: 任务分析, steps: [步骤1, 步骤2, ...], tools_needed: [需要的工具], risks: [潜在风险] }} return call_llm(prompt, temperature0.2) def execute(self, task: str) - str: 执行任务 # 1. 先思考 thought self.think(task) print(f[{self.name}] 思考过程\n{thought}\n) # 2. 执行 prompt f作为{self.role}请执行以下任务。 任务{task} 思考分析{thought} 请给出最终的执行结果要求 结果要具体、可操作 包含必要的代码或配置 指出注意事项 result call_llm(prompt, temperature0.5) 3. 记录历史 self.conversation_history.append({ task: task, thought: thought, result: result }) return result def reflect(self) - str: 反思与总结 if not self.conversation_history: return 还没有执行过任务 history_summary \n.join([ f任务{i1}: {h[task][:50]}... for i, h in enumerate(self.conversation_history) ]) prompt f作为{self.role}请回顾你刚刚完成的任务进行反思总结。 已完成的任务 {history_summary} 请分析 哪些地方做得好 哪些地方可以改进 学到了什么经验 下一步计划 return call_llm(prompt, temperature0.7) 使用示例 agent SmartAgent(CodeMaster, 资深全栈开发工程师) 执行任务 result1 agent.execute( 请用Python实现一个简单的任务队列系统要求 支持任务的添加、执行和状态查询 使用线程池并发执行 包含错误处理和重试机制 ) print(f执行结果\n{result1}\n) 反思总结 reflection agent.reflect() print(f反思总结\n{reflection})6. 提示词优化与调试6.1 温度参数调优def temperature_experiment(prompt, temperatures[0.0, 0.5, 1.0, 1.5]): 测试不同温度参数的效果 results {} for temp in temperatures: result call_llm(prompt, temperaturetemp) results[temp] result print(fTemperature{temp}:) print(result[:200] ...\n) return results prompt 请用三种不同的方式实现Python中的斐波那契数列 temperature_experiment(prompt)6.2 提示词版本管理class PromptManager: 提示词版本管理器 def __init__(self): self.prompts {} self.version 0 def register_prompt(self, name: str, template: str, version: str 1.0): 注册提示词模板 if name not in self.prompts: self.prompts[name] [] self.prompts[name].append({ version: version, template: template, created_at: 2024-01-01 }) self.version 1 def get_prompt(self, name: str, version: Optional[str] None) - str: 获取指定版本的提示词 if name not in self.prompts: raise ValueError(f提示词 {name} 不存在) prompts self.prompts[name] if version: for p in prompts: if p[version] version: return p[template] raise ValueError(f版本 {version} 不存在) return prompts[-1][template] def compare_versions(self, name: str, v1: str, v2: str) - Dict: 比较两个版本的差异 prompt1 self.get_prompt(name, v1) prompt2 self.get_prompt(name, v2) return { name: name, version_1: v1, version_2: v2, length_diff: len(prompt2) - len(prompt1), content_diff: 请手动对比两个版本的差异 } 使用示例 pm PromptManager() 注册不同版本的提示词 pm.register_prompt(code_review, 请审查以下代码找出潜在问题{code}, 1.0) pm.register_prompt(code_review, 请作为资深代码审查专家审查以下代码。 审查标准 代码可读性 性能优化点 安全隐患 最佳实践 代码 {code} 请按以下格式输出 问题列表 严重程度 修改建议, 2.0) 使用最新版本 code def process(data): r [] for i in data: r.append(i*2) return r prompt pm.get_prompt(code_review).format(codecode) print(call_llm(prompt))7. 总结与最佳实践本文通过大量代码实战系统介绍了Agent开发中的提示词工程核心技巧。以下是关键要点总结明确性优先提示词越具体输出越可控。始终提供清晰的输入输出格式和约束条件。角色设定为Agent赋予专业角色可以显著提升输出质量。结构化输出使用JSON等格式让Agent的输出可直接被程序消费。思维链引导模型逐步推理解决复杂问题。少样本学习通过示例让模型快速理解任务模式。安全约束始终在提示词中明确边界和安全规则。持续优化通过温度调优、版本管理和A/B测试不断改进提示词效果。提示词工程是一个持续迭代的过程建议在实际项目中建立自己的提示词库和评估体系不断积累最佳实践。

相关新闻

如何在Windows/Linux/macOS上构建高性能Switch模拟器:Ryujinx完整技术指南

如何在Windows/Linux/macOS上构建高性能Switch模拟器:Ryujinx完整技术指南

如何在Windows/Linux/macOS上构建高性能Switch模拟器:Ryujinx完整技术指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验《塞尔达传说:王国之泪…

2026/10/16 5:08:16 阅读更多 →
JWTDecode.swift错误处理最佳实践:解决常见解码问题

JWTDecode.swift错误处理最佳实践:解决常见解码问题

JWTDecode.swift错误处理最佳实践:解决常见解码问题 【免费下载链接】JWTDecode.swift A JWT decoder for iOS, macOS, tvOS, and watchOS 项目地址: https://gitcode.com/gh_mirrors/jw/JWTDecode.swift JWTDecode.swift是一款专为iOS、macOS、tvOS和watchO…

2026/10/16 5:10:28 阅读更多 →
为什么你需要将 Google Drive 变成本地文件系统?GDriveFS 深度解析

为什么你需要将 Google Drive 变成本地文件系统?GDriveFS 深度解析

为什么你需要将 Google Drive 变成本地文件系统?GDriveFS 深度解析 【免费下载链接】GDriveFS An innovative FUSE wrapper for Google Drive. 项目地址: https://gitcode.com/gh_mirrors/gd/GDriveFS 在云存储普及的今天,Google Drive 已成为许多…

2026/10/17 2:55:55 阅读更多 →

最新新闻

深度学习内容算法综述落地指南:Embedding、注意力与双塔召回实战

深度学习内容算法综述落地指南:Embedding、注意力与双塔召回实战

简介:面向深度学习研究者与算法工程师,这份演示文稿围绕信息过载时代如何借助深度神经网络提升内容分类、推荐与识别效率,系统梳理了基于深度学习的内容算法体系。内容覆盖基本原理、研究现状与发展趋势三大模块,详细讲解文本分类…

2026/10/17 22:44:42 阅读更多 →
AI论文网站怎么选?MBA论文写作的9个实用工具与避坑指南

AI论文网站怎么选?MBA论文写作的9个实用工具与避坑指南

前两天有位做项目管理方向的MBA学员深夜给我发来一条消息:网上说有个AI网站,五分钟能生成一篇MBA论文,真的假的?我看了一眼那个宣传页,心里想,这要是能过答辩,那导师们这些年审过的论文怕是都要…

2026/10/17 22:44:42 阅读更多 →
基于PLC与组态王的机械手控制系统设计:从选型到联调避坑指南

基于PLC与组态王的机械手控制系统设计:从选型到联调避坑指南

简介:这份毕业设计文档面向电气自动化、机电一体化等专业的学生与指导教师,围绕基于S7-200 PLC与组态王的机械手控制系统展开,可帮助读者完成从选题到答辩的完整设计流程。资源为单个doc文件,压缩包约2.88MB,文档结构完…

2026/10/17 22:44:42 阅读更多 →
C++实现仿OllyDbg调试器:断点机制与事件循环实战解析

C++实现仿OllyDbg调试器:断点机制与事件循环实战解析

简介:这套调试器源码使用C/C在VS2015下开发,基于Windows 10环境实现了一个类似OllyDebug的可运行调试工具,面向软件开发人员、逆向工程师和安全研究人员,可帮助他们完成程序调试纠错、软件行为剖析与恶意样本分析等任务。包体共72…

2026/10/17 22:44:42 阅读更多 →
容器化Kafka跨网闸接入实战:advertised.listeners与IP映射对齐指南

容器化Kafka跨网闸接入实战:advertised.listeners与IP映射对齐指南

最近刚帮一个客户处理了典型的跨网段Kafka接入问题。现场的情况是这样的:核心应用区里用容器跑了一套三节点的Kafka,但同一栋楼里另一个网段的数据分析平台需要实时消费这边的业务消息。两个网段之间横着一台安全隔离网关(业内习惯叫“网闸”…

2026/10/17 22:44:42 阅读更多 →
相位偏折成像:破解镜面与高光表面微小缺陷检测难题

相位偏折成像:破解镜面与高光表面微小缺陷检测难题

1. 相位偏折成像到底解决什么问题做工业视觉检测的朋友应该都有同感:2D相机拍镜面、高光、类镜面表面时,怎么布光都不对劲。反光处一片惨白,划痕若隐若现,轻微压伤更是完全看不出来。某次我们接了一个手机玻璃后盖的检测项目&…

2026/10/17 22:43:42 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →