尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

提示词工程实战:构建具备上下文记忆的AI聊天机器人

提示词工程实战:构建具备上下文记忆的AI聊天机器人 在实际学习和应用大语言模型的过程中很多人发现即使模型能力强大如果提问方式不对得到的答案也往往不尽人意。提示词工程正是为了解决这个问题而生的核心技能它研究如何通过精心设计的指令、上下文和格式引导模型输出更准确、更符合预期的结果。这并非简单的“说话技巧”而是一门结合了心理学、语言学和计算机科学的实践性学科。对于开发者、产品经理、数据分析师乃至任何需要与AI协作的职场人而言掌握提示词工程意味着能更高效地将大语言模型转化为生产力工具。无论是构建一个能理解复杂指令的聊天机器人还是让模型完成代码生成、数据分析、内容创作等专业任务都离不开有效的提示词设计。本文将围绕提示词工程的核心技能展开从基础概念到实战构建一个具备记忆和上下文理解能力的聊天机器人通过具体的示例代码和配置带你系统掌握这门“与AI对话的艺术”。学完后你将能够设计出清晰、高效、可复用的提示词并应用于实际项目中。1. 理解提示词工程从指令到结构化思维在深入实战之前必须厘清几个核心概念。提示词工程不是魔法其有效性建立在模型的工作原理之上。1.1 什么是提示词为什么它如此重要提示词是你输入给大语言模型的所有文本包括指令、问题、上下文、示例等。模型根据这段文本基于其海量训练数据中学习到的模式生成接下来的文本序列。一个糟糕的提示词会导致模型误解意图、生成无关内容或格式混乱而一个优秀的提示词能精准激发模型特定能力得到高质量输出。其重要性体现在三个方面成本与效率通过优化提示词一次性得到可用结果避免了多次低效交互产生的API调用成本和时间浪费。结果可控性明确的提示词能约束模型的输出范围减少“幻觉”即编造事实使结果更可靠、更符合业务逻辑。能力解锁许多高级能力如思维链推理、角色扮演、特定格式输出必须通过特定的提示词技术才能激活。1.2 提示词的核心构成要素一个完整的、工程化的提示词通常包含多个部分而非简单的一个问题。以下是其核心要素角色Role为模型设定一个身份如“你是一位经验丰富的Java架构师”、“你是一个严谨的学术翻译助手”。这能引导模型采用相应的知识库和语言风格。指令Instruction清晰、无歧义地告诉模型要做什么。例如“总结以下文章”、“将以下JSON转换为YAML格式”、“写一个Python函数实现...”。上下文Context提供完成任务所需的背景信息。这可以是用户的历史对话、相关的文档片段、当前系统的状态等。上下文是赋予模型“记忆”和“情境感知”能力的关键。输入数据Input Data需要被处理的具体内容。例如需要被总结的文章原文、需要被转换的JSON数据、需要被修复的代码片段。输出指示Output Indicator明确指定输出的格式、结构、长度等要求。例如“请用Markdown列表输出”、“输出一个包含name和age字段的JSON对象”、“用不超过100字回答”。一个结构化的提示词模板如下所示你是一个[角色]。 你的任务是[指令]。 相关的背景信息是[上下文]。 请处理以下输入[输入数据]。 请按照以下要求输出[输出指示]。1.3 从基础技巧到高级策略提示词工程有一套渐进式的技能树清晰具体避免模糊。将“写点关于狗的东西”改为“写一段面向宠物新手的、关于金毛巡回犬日常护理饮食、运动、梳毛的简短介绍”。提供示例Few-Shot Prompting在提示词中给出1-3个输入输出的例子模型能快速理解你期望的格式和逻辑。这对于复杂格式或分类任务尤其有效。思维链Chain-of-Thought, CoT对于复杂推理问题在提示词中鼓励模型“一步一步思考”或展示推理步骤能显著提升答案的准确性。例如“首先分析问题中的关键条件其次列出已知公式然后分步计算...”角色扮演Persona如前所述通过设定角色来定制化输出风格和知识深度。分隔符的使用使用、---、XML标签等清晰分隔指令、上下文和输入数据防止模型混淆。系统提示词System Prompt在聊天API中系统消息用于设定对话的全局行为准则和角色它比用户消息对模型的影响更底层、更持久。理解了这些基础我们才能着手搭建一个能运用这些技巧的实战项目。2. 环境准备与项目初始化我们将使用Python和OpenAI API兼容OpenAI接口的其他开源模型API亦可来构建一个具有上下文记忆的聊天机器人。选择Python是因为其生态丰富OpenAI API是事实上的行业标准接口。2.1 环境与依赖配置首先确保你的开发环境已就绪。Python环境建议使用Python 3.8及以上版本。可以使用conda或venv创建独立的虚拟环境。# 创建虚拟环境 python -m venv venv_prompt_eng # 激活虚拟环境 (Linux/macOS) source venv_prompt_eng/bin/activate # 激活虚拟环境 (Windows) venv_prompt_eng\Scripts\activate安装核心库我们需要openai库来调用APIpython-dotenv来管理密钥。pip install openai python-dotenv获取API密钥你需要一个OpenAI API密钥或者使用支持OpenAI接口的其他服务如Azure OpenAI、DeepSeek、Ollama本地模型等。将密钥保存在项目根目录的.env文件中避免硬编码在代码里。# .env 文件内容 OPENAI_API_KEY你的-api-key-here OPENAI_API_BASEhttps://api.openai.com/v1 # 如果使用其他服务请替换此地址2.2 项目结构设计一个清晰的项目结构有助于管理代码和提示词模板。建议如下prompt_engineering_chatbot/ ├── .env # 环境变量存储API密钥 ├── .gitignore # Git忽略文件 ├── requirements.txt # 项目依赖 ├── config.py # 配置文件 ├── prompts/ # 存放提示词模板 │ ├── __init__.py │ ├── system_prompts.py # 系统提示词定义 │ └── chat_templates.py # 聊天模板 ├── core/ # 核心逻辑 │ ├── __init__.py │ ├── chat_manager.py # 聊天会话管理 │ └── memory.py # 记忆上下文管理 ├── utils/ # 工具函数 │ ├── __init__.py │ └── helpers.py └── main.py # 主程序入口创建requirements.txt文件记录依赖openai1.0.0 python-dotenv1.0.02.3 基础配置与客户端初始化创建config.py用于集中管理配置。# config.py import os from dotenv import load_dotenv # 加载 .env 文件中的环境变量 load_dotenv() class Config: # API 配置 OPENAI_API_KEY os.getenv(OPENAI_API_KEY) OPENAI_API_BASE os.getenv(OPENAI_API_BASE, https://api.openai.com/v1) # 模型配置 CHAT_MODEL gpt-3.5-turbo # 可根据需要改为 gpt-4, gpt-4o-mini 等 CHAT_MODEL_MAX_TOKENS 4096 # 模型上下文最大长度 # 应用配置 MAX_HISTORY_LENGTH 10 # 保留的对话轮次用于控制上下文长度 TEMPERATURE 0.7 # 创造性0.0-2.0越高越随机 classmethod def validate(cls): 验证必要配置是否已设置 if not cls.OPENAI_API_KEY: raise ValueError(OPENAI_API_KEY 未在环境变量或 .env 文件中设置。)接下来在core/目录下创建初始化客户端的模块。通常我们会在chat_manager.py中处理但为了清晰可以先创建一个简单的客户端工具。# utils/helpers.py import openai from config import Config def get_openai_client(): 创建并返回配置好的OpenAI客户端 Config.validate() client openai.OpenAI( api_keyConfig.OPENAI_API_KEY, base_urlConfig.OPENAI_API_BASE, ) return client3. 构建核心聊天管理器实现记忆与对话聊天机器人的核心是管理对话历史记忆并调用模型API。我们将实现一个能记住最近对话的聊天管理器。3.1 设计记忆管理模块记忆模块负责存储和裁剪对话历史。为了控制API调用的token消耗我们不能无限制地保存所有历史记录。# core/memory.py from typing import List, Dict, Any class ConversationMemory: 对话记忆管理类 def __init__(self, max_length: int 10): 初始化对话记忆 :param max_length: 最大记忆轮次一问一答为一轮 self.max_length max_length self.history: List[Dict[str, str]] [] # 格式: [{role: user, content: ...}, {role: assistant, content: ...}] def add_interaction(self, user_message: str, assistant_message: str): 添加一轮完整的交互用户消息 助手回复到历史 self.history.append({role: user, content: user_message}) self.history.append({role: assistant, content: assistant_message}) self._trim_history() def add_system_message(self, content: str): 添加系统消息到历史开头通常只执行一次 # 确保系统消息在历史记录的最开始且唯一 if not self.history or self.history[0][role] ! system: self.history.insert(0, {role: system, content: content}) else: # 如果已存在则更新内容 self.history[0][content] content def get_history_for_api(self) - List[Dict[str, str]]: 获取适用于API调用的历史消息列表 return self.history.copy() def clear_history(self): 清空历史记录但保留系统消息 system_msg None if self.history and self.history[0][role] system: system_msg self.history[0] self.history [] if system_msg: self.history.append(system_msg) def _trim_history(self): 修剪历史记录确保不超过最大长度按轮次计算 # 计算总轮次每2条消息为一轮 total_rounds len([m for m in self.history if m[role] ! system]) // 2 if total_rounds self.max_length: return # 需要移除的轮次数 rounds_to_remove total_rounds - self.max_length # 找到第一条非系统消息的索引 start_idx 1 if self.history and self.history[0][role] system else 0 # 移除最早的 rounds_to_remove 轮对话每轮2条消息 remove_count rounds_to_remove * 2 del self.history[start_idx:start_idx remove_count] def get_conversation_summary(self) - str: 获取当前对话的简短摘要可用于超长对话的压缩 # 这是一个简化版实际项目中可以使用模型来生成摘要 user_msgs [m[content] for m in self.history if m[role] user] if not user_msgs: return 对话尚未开始。 return f最近讨论了: {user_msgs[-1][:50]}... # 取最后一条用户消息的前50字符3.2 实现聊天管理器聊天管理器将记忆模块和API调用封装在一起并提供简单的聊天接口。# core/chat_manager.py import json from typing import Optional, Dict, Any from config import Config from utils.helpers import get_openai_client from core.memory import ConversationMemory class ChatBotManager: 聊天机器人管理器 def __init__(self, system_prompt: Optional[str] None): 初始化聊天机器人 :param system_prompt: 系统提示词用于设定助手的行为和角色 self.client get_openai_client() self.memory ConversationMemory(max_lengthConfig.MAX_HISTORY_LENGTH) self.model Config.CHAT_MODEL self.temperature Config.TEMPERATURE # 设置系统提示词 if system_prompt: self.set_system_prompt(system_prompt) else: # 默认系统提示词 self.set_system_prompt(你是一个有用且友好的AI助手。) def set_system_prompt(self, prompt: str): 更新系统提示词 self.memory.add_system_message(prompt) def chat(self, user_input: str) - str: 处理用户输入返回助手回复 :param user_input: 用户消息 :return: 助手回复内容 try: # 准备消息列表系统消息 历史对话 最新用户输入 messages self.memory.get_history_for_api() messages.append({role: user, content: user_input}) # 调用OpenAI API response self.client.chat.completions.create( modelself.model, messagesmessages, temperatureself.temperature, max_tokens1024, # 控制单次回复的最大长度 ) # 提取助手回复 assistant_reply response.choices[0].message.content # 将本轮交互存入记忆 self.memory.add_interaction(user_input, assistant_reply) return assistant_reply except Exception as e: # 处理API调用错误 error_msg f调用AI服务时出错: {str(e)} # 可以选择将错误信息也记录到日志或返回给用户 return f抱歉处理您的请求时出现了问题。错误信息{error_msg} def clear_conversation(self): 清空对话历史保留系统提示词 self.memory.clear_history() def get_conversation_history(self) - list: 获取完整的对话历史用于显示或调试 return self.memory.get_history_for_api()3.3 设计并管理提示词模板将提示词模板化是提示词工程的最佳实践。我们在prompts/目录下创建模板。# prompts/system_prompts.py 定义各种角色的系统提示词模板 # 通用友好助手 GENERAL_ASSISTANT 你是一个有用、准确且友好的AI助手。 你的目标是尽最大努力帮助用户解决问题。 如果用户的问题超出你的知识范围或涉及有害内容请礼貌地说明并拒绝回答。 请用清晰、有条理的中文进行回复。 # 代码专家 CODE_EXPERT 你是一位经验丰富的全栈开发专家精通Python、Java、JavaScript、Go等多种编程语言熟悉常见框架和设计模式。 你的任务是为用户提供代码编写、调试、优化和解释服务。 请确保提供的代码正确、高效且符合最佳实践并附上必要的注释。 如果用户的问题模糊请先询问澄清再给出解答。 # 创意写作助手 CREATIVE_WRITER 你是一位富有创造力和文采的写作助手擅长写故事、诗歌、广告文案、邮件等各类文本。 你的风格可以根据用户需求调整可以是幽默的、严肃的、优美的或专业的。 请专注于内容的原创性、连贯性和吸引力。 # 严格的事实核查员 FACT_CHECKER 你是一个严格、严谨的事实核查员。你的知识截止于2024年7月。 对于用户提供的任何陈述、数据或观点你都需要基于可靠来源进行核实。 如果信息正确请确认并补充背景如果信息有误或存疑请明确指出并给出正确信息或可靠来源的提示。 如果你无法核实请明确说明“无法核实”。不要猜测或编造信息。 def get_system_prompt(prompt_name: str) - str: 根据名称获取系统提示词 prompts { general: GENERAL_ASSISTANT, coder: CODE_EXPERT, writer: CREATIVE_WRITER, fact_checker: FACT_CHECKER, } return prompts.get(prompt_name, GENERAL_ASSISTANT)# prompts/chat_templates.py 定义用户消息的模板Few-Shot, CoT等 def few_shot_classification_template(text_to_classify: str, categories: list) - str: 少样本分类提示词模板 :param text_to_classify: 待分类的文本 :param categories: 分类类别列表 :return: 构造好的提示词 examples 示例1 文本“这个手机电池续航太差了用半天就没电。” 分类负面 示例2 文本“物流速度很快包装也很完好。” 分类正面 示例3 文本“产品功能符合描述但价格有点高。” 分类中性 prompt f请将以下文本分类到 {categories} 中的一类。 {examples} 现在请分类以下文本 文本“{text_to_classify}” 分类 return prompt def chain_of_thought_math_template(problem: str) - str: 思维链数学推理提示词模板 :param problem: 数学问题 :return: 构造好的提示词 prompt f请解决以下数学问题。请一步一步地展示你的推理过程最后给出答案。 问题{problem} 让我们一步一步思考 return prompt def json_output_template(user_request: str, fields: dict) - str: 要求JSON格式输出的提示词模板 :param user_request: 用户的需求描述 :param fields: 期望的JSON字段及类型说明例如 {{name: 字符串, score: 整数}} :return: 构造好的提示词 fields_desc , .join([f{k} ({v}) for k, v in fields.items()]) prompt f根据以下描述生成一个JSON对象。 描述{user_request} 要求JSON对象必须包含以下字段{fields_desc}。 请只输出JSON不要有任何其他解释。 return prompt4. 整合与实战运行你的聊天机器人现在我们将所有模块整合起来创建一个可以交互的命令行聊天机器人并演示不同提示词技巧的应用。4.1 创建主程序入口# main.py import sys from core.chat_manager import ChatBotManager from prompts.system_prompts import get_system_prompt from prompts.chat_templates import ( few_shot_classification_template, chain_of_thought_math_template, json_output_template ) def main(): print(初始化聊天机器人...) # 初始化为通用助手 bot ChatBotManager(system_promptget_system_prompt(general)) print(\n 提示词工程聊天机器人 ) print(命令说明) print( /role [name] - 切换角色 (general, coder, writer, fact_checker)) print( /clear - 清空对话历史) print( /history - 查看对话历史) print( /template - 使用预置提示词模板) print( /exit - 退出程序) print( * 40) while True: try: user_input input(\n你: ).strip() if not user_input: continue # 处理命令 if user_input.startswith(/): handle_command(user_input, bot) continue # 普通聊天 response bot.chat(user_input) print(f助手: {response}) except KeyboardInterrupt: print(\n\n程序被中断退出。) sys.exit(0) except Exception as e: print(f发生错误: {e}) def handle_command(cmd: str, bot: ChatBotManager): 处理用户输入的命令 parts cmd.split() cmd_type parts[0].lower() if cmd_type /role and len(parts) 1: role_name parts[1] try: new_prompt get_system_prompt(role_name) bot.set_system_prompt(new_prompt) print(f已切换角色为: {role_name}) except KeyError: print(f未知角色: {role_name}。可用角色: general, coder, writer, fact_checker) elif cmd_type /clear: bot.clear_conversation() print(对话历史已清空。) elif cmd_type /history: history bot.get_conversation_history() print(\n--- 对话历史 ---) for msg in history: print(f{msg[role]}: {msg[content][:100]}...) # 只显示前100字符 print(--- 结束 ---) elif cmd_type /template: print(\n可用的提示词模板) print( 1. 少样本分类 (Few-Shot Classification)) print( 2. 思维链数学推理 (Chain-of-Thought)) print( 3. JSON格式输出 (JSON Output)) choice input(请选择模板编号 (1-3): ).strip() if choice 1: text input(请输入要分类的文本: ) categories [正面, 负面, 中性] prompt few_shot_classification_template(text, categories) print(f\n生成的提示词:\n---\n{prompt}\n---) response bot.chat(prompt) print(f助手(分类结果): {response}) elif choice 2: problem input(请输入数学问题 (例如: 一个篮子里有12个苹果吃了3个又放进5个现在有多少个): ) prompt chain_of_thought_math_template(problem) print(f\n生成的提示词:\n---\n{prompt}\n---) response bot.chat(prompt) print(f助手(推理过程):\n{response}) elif choice 3: desc input(请输入需求描述 (例如: 生成一个代表一本书的信息): ) # 这里简化处理实际可以更复杂地解析字段 prompt json_output_template(desc, {title: 字符串, author: 字符串, year: 整数}) print(f\n生成的提示词:\n---\n{prompt}\n---) response bot.chat(prompt) print(f助手(JSON输出):\n{response}) else: print(无效选择。) elif cmd_type /exit: print(再见) sys.exit(0) else: print(f未知命令: {cmd_type}。输入 /? 查看帮助。) if __name__ __main__: main()4.2 运行与验证在项目根目录下确保.env文件已正确配置API密钥然后运行python main.py程序启动后你将看到一个简单的命令行界面。你可以直接输入问题与机器人聊天也可以使用命令切换角色、清空历史或体验预置的提示词模板。示例交互1角色切换你: /role coder 助手: 已切换角色为: coder 你: 帮我写一个Python函数计算斐波那契数列的第n项。 助手: 当然。这里提供一个使用缓存的递归实现记忆化搜索它比普通递归高效得多...示例交互2使用Few-Shot模板你: /template ... 选择1 ... 你: 请输入要分类的文本: 客服态度很好但问题解决得太慢了。 助手(分类结果): 中性模型根据我们提供的例子正确地将这条混合情感的文本分类为“中性”。示例交互3验证上下文记忆你: 我之前让你帮我写过什么代码 助手: 根据我们的对话历史我之前为您编写了一个用于计算斐波那契数列第n项的Python函数采用了记忆化搜索优化。这表明我们的ConversationMemory模块正在正常工作模型能够利用历史上下文进行回答。5. 高级技巧与生产环境考量基础的聊天机器人已经完成但要将其用于更严肃的场景还需要考虑更多。5.1 高级提示词技巧实践1. 思维链CoT的进阶使用对于极其复杂的问题可以要求模型先输出“思考过程”再输出“最终答案”。这可以通过在系统提示词或用户消息中明确要求来实现。# 在 prompts/chat_templates.py 中添加 def advanced_cot_template(problem: str) - str: prompt f请解决以下复杂问题。请将你的回答分为两部分 第一部分在“思考过程”标签下详细、逐步地展示你的推理逻辑。 第二部分在“最终答案”标签下给出简洁明确的最终答案。 问题{problem} 思考过程 return prompt2. 使用分隔符避免提示词注入当用户输入可能包含指令时使用分隔符可以防止其混淆模型的判断。user_data “””这是一段用户提供的文本它可能包含像‘忽略之前的指令’这样的句子。””” prompt f请总结以下用三重引号分隔的文本 \\\{user_data}\\\ 总结5.2 生产环境优化与排查将聊天机器人投入生产环境如Web服务时需要考虑以下问题及解决方案问题现象可能原因检查与排查方式处理建议与最佳实践响应速度慢1. 网络延迟。2. 模型负载高。3. 上下文history过长导致请求token数过多。1. 记录API调用耗时。2. 检查当前上下文消息的token数量可使用tiktoken库估算。1. 实现上下文窗口的滑动窗口或摘要压缩。当历史超过一定长度时保留最近对话将早期对话总结成一段摘要放入上下文。2. 对于实时性要求高的场景考虑使用更小、更快的模型如gpt-3.5-turbo。3. 使用异步调用避免阻塞主线程。API调用频繁失败1. API密钥无效或过期。2. 达到速率限制RPM/TPM。3. 服务端不稳定。1. 检查API密钥和环境变量。2. 查看错误响应体中的code和message字段如rate_limit_exceeded。3. 监控服务的状态页。1. 实现重试机制如指数退避。对于速率限制错误等待一段时间后重试。2. 使用API密钥轮换在多个密钥间平衡请求。3. 增加熔断器在连续失败时暂时停止请求避免雪崩。模型输出不稳定或“胡言乱语”1.temperature参数过高。2. 系统提示词被后续用户输入覆盖或干扰。3. 模型本身的不确定性。1. 检查传入API的temperature值建议0.7以下用于确定性任务。2. 打印完整的请求消息列表确认系统消息在首位且未被修改。1.降低temperature如设为0.2以获得更确定的结果。2. 确保系统提示词被牢固设定并采用消息分隔符防止用户输入破坏指令。3. 使用后处理过滤器对输出进行格式、关键词或敏感词检查。上下文丢失或混乱1.ConversationMemory的修剪逻辑有误。2. 多轮对话中用户和助手消息未成对存储。3. Token数计算不准确导致API截断。1. 单元测试_trim_history方法。2. 在调试模式下打印每一轮API请求的messages列表。1. 使用模型的max_tokens参数和token计算库实现基于token数而非轮次的精确修剪。2. 为每个对话会话Session创建独立的ConversationMemory实例避免交叉污染。提示词模板维护困难1. 模板散落在代码各处。2. 修改模板需要重新部署代码。1. 审查代码结构。1. 将提示词模板外部化存储在JSON、YAML文件或数据库中便于动态更新和管理。2. 使用模板引擎如Jinja2来渲染复杂的提示词支持变量和条件逻辑。关键配置参数说明参数含义典型值影响temperature采样温度控制随机性。0.0 - 2.0值越高如1.0输出越随机、有创意值越低如0.2输出越确定、一致。max_tokens单次回复生成的最大token数。视需求而定控制回复长度。设置过低可能导致回复被截断设置过高可能浪费资源。需结合模型上下文总长度考虑。top_p核采样概率。0.0 - 1.0与temperature类似控制多样性。通常只调整其中一个。frequency_penalty频率惩罚。-2.0 - 2.0正值降低重复用词的概率使文本更不重复。presence_penalty存在惩罚。-2.0 - 2.0正值降低重复话题的概率鼓励引入新内容。5.3 安全与内容过滤在生产环境中必须对用户输入和模型输出进行安全检查。输入过滤检查用户输入是否包含恶意指令提示词注入、敏感个人信息或违规内容。可以建立关键词黑名单或使用专门的文本审核API。输出过滤对模型的回复进行同样的安全检查防止模型被“诱导”生成有害内容。设置系统护栏在系统提示词中明确、强硬地规定行为边界例如“你绝对不能生成暴力、仇恨、歧视性或成人内容。如果用户请求此类内容你必须坚决拒绝并解释原因。”6. 扩展方向与进一步学习掌握了基础架构后你可以从以下几个方向深化你的聊天机器人项目集成向量数据库实现长期记忆RAG当前记忆是短暂的。可以集成如Chroma、Pinecone等向量数据库将对话历史或外部知识库如产品文档向量化存储实现基于语义搜索的长期、精准记忆和知识问答。构建Web或图形界面使用FastAPI、Flask构建后端API并用Vue、React构建前端页面将聊天机器人服务化。连接外部工具与API让模型学会调用外部工具如计算器、搜索引擎、数据库查询实现更强大的功能。这涉及到Function Calling或Tool Use技术。实现流式输出Streaming修改API调用使用流式响应让回复像ChatGPT一样一个字一个字地显示提升用户体验。多模态能力如果使用的模型支持如GPT-4V可以扩展接口处理用户上传的图片、文档并基于其内容进行对话。深入优化提示词系统学习更高级的提示模式如ReAct (Reasoning Acting)、Self-Consistency、Tree of Thoughts等以解决更复杂的推理和规划任务。提示词工程是一个需要持续实践和迭代的领域。最有效的方法是针对你的具体任务建立一套提示词模板库并通过A/B测试不断优化它们记录哪些提示词结构对特定任务最有效。从构建这个简单的、具备记忆功能的聊天机器人开始你已经掌握了最核心的流程和思想可以在此基础上探索更广阔的可能性。
返回列表