用AI让AI更聪明:提示词优化、合成数据与自动化评估实践
2026/8/29 12:33:15 网站建设 项目流程

最近在做一个内部 AI 工具链的迭代项目时,碰到一个很有意思的命题:我们整天在教 AI 怎么做事情,写提示词、微调模型、搭建 Agent 流程,但很少停下来想一想——能不能让 AI 来帮我们完成这些“让 AI 更聪明”的工作?

换句话说,Making AI Smarter with AI,用 AI 来增强 AI 的智商。

这篇文章不是讲某个单一框架的教程,而是探讨一条正在快速落地的工程路线:如何用大模型优化提示词、生成训练数据、自动化评估、甚至构建一个能自我迭代的 Agent 工作流。我会从概念讲起,拆解技术路线,再给出可以直接改改就用的 Python 示例代码。适合对大模型应用开发有兴趣、已经跑通过基本 API 调用的开发者阅读。

1. 背景与核心概念

1.1 什么是“用 AI 让 AI 更聪明”

传统的大模型开发流程通常是这样的:开发者写提示词 -> 调用模型 -> 看结果 -> 觉得不满意 -> 手动改提示词 -> 再调用。这个过程完全靠人的直觉和经验,费时费力,而且不同模型、不同任务之间的迁移能力很差。

“用 AI 让 AI 更聪明”这个方向,本质上就是把上面这个循环中的“人”逐步替换成“AI”

  • 用大模型来分析和优化提示词;
  • 用大模型自动生成训练或评测数据;
  • 用大模型扮演裁判,评估另一个模型的输出质量;
  • 用大模型感知任务结果,自动调整下一步行动。

听起来有点递归的味道,但在工程上完全可行。大模型的优势在于语言理解和生成,而“优化提示词”“打标数据”“评估结果”这些工作恰好都是语言密集型任务。让 AI 来处理这些任务,反而比传统的规则脚本更灵活。

1.2 为什么现在这个方向值得关注

过去一年,AI 应用开发的关注点正在从“怎么调用模型”转向“怎么把模型用得更聪明、更稳定、更可控”。在真实项目中,模型 API 的底层能力已经相对固定,开发者之间的差距渐渐体现到了三个地方:

  1. 提示词质量:同样的模型,好的提示词和差的提示词,效果差距可能非常大;
  2. 数据质量:微调或评测时,训练数据的好坏直接决定模型表现;
  3. 反馈闭环:能不能自动评估模型输出,并且根据评估结果持续优化流程。

这三个环节,恰好都是 AI 可以介入的。所以,“Making AI Smarter with AI”不是实验室里的炫技,而是 AI 工程实践里非常实际的方向。

1.3 适用范围与典型场景

举几个真实场景,你应该能感受到这个方向的价值:

场景传统做法用 AI 增强后的做法
提示词调优靠人反复试错让 AI 分析失败样例,自动改写提示词
微调数据准备人工写标注规则,逐条标注用大模型生成初稿,人工抽检修正
模型评测人工看几百条结果打分用大模型作为裁判,批量打分并输出理由
Agent 决策写死 if-else 逻辑让模型根据任务反馈决定下一步动作

从个人开发者的辅助工具,到企业内部的自动化评测平台,这个思路都可以落地。接下来,我会以自己的项目为例,完整拆解一个“AI 增强 AI”的最小工程闭环。

2. 技术路线总览

在动手写代码之前,先梳理清楚技术路线。我把它拆成四个层次,由浅入深。

2.1 第一层:提示词工程增强

这是最直接、最轻量的一层。核心思路是:写一个“元提示词”(meta-prompt),让大模型帮你分析现有提示词的问题,并给出优化版本。

典型实现:

原始提示词:对用户问题给出简洁回答。 任务:分析这个提示词在“明确性、约束条件、输出格式”三个维度上的不足,并给出优化后的版本。

这一层适合那些经常需要写提示词、但不想每次手动调优的开发者。

2.2 第二层:数据增强与合成数据

当模型需要微调或做 few-shot 时,训练数据的数量和质量是瓶颈。大模型可以用于:

  • 根据少量人工种子样本,生成更多相似样本;
  • 对已有样本做改写、扩写、纠错;
  • 生成“难例”来提升模型的鲁棒性。

这一层适合做垂直领域模型微调、RAG 知识库构建、评测集扩充的团队。

2.3 第三层:自动化评估(LLM-as-a-Judge)

评测是 AI 工程里最容易被忽视的环节。人工评测几十条还可以,几百条几千条就完全不现实了。用大模型当裁判(LLM-as-a-Judge),可以:

  • 按多个维度打分(相关性、完整性、安全性);
  • 输出结构化的评估理由;
  • 对比两个模型的输出质量(A/B 评估)。

这一层适合做模型选型、版本回归、Prompt 效果对比的团队。

2.4 第四层:Agent 自我迭代

Agent 是“AI 让 AI 更聪明”的进阶形态。它不只是优化单个环节,而是把“计划 -> 执行 -> 反馈 -> 修正”闭环串起来。模型在执行任务后,根据结果自动调整下一步提示词或动作。

这一层适合做自动化研究、代码生成、复杂任务拆解的开发者。

四个层次不是互斥的,实际项目可以组合使用。下面我会给出每一层的代码示例,并在最后组合成一个完整的流程。

3. 环境准备与项目结构

3.1 环境与依赖

本文示例使用 Python 3.9+,通过 OpenAI 兼容接口调用大模型。如果你的环境使用国内大模型服务,或者公司内部部署的模型网关,只要接口是 OpenAI 兼容格式,代码思路都是一样的。

需要安装的依赖:

pip install openai python-dotenv

注意,openai库请根据你的实际环境选择合适的版本。新版 SDK 的调用方式是OpenAI(),老版本的openai.ChatCompletion.create()在新版本中已经不再建议使用。本文示例以新版 SDK 写法为主。

环境变量配置:

# .env OPENAI_API_KEY=你的API密钥 OPENAI_BASE_URL=https://你的模型服务地址 MODEL_NAME=gpt-4o-mini

如果你使用的是本地模型服务,OPENAI_BASE_URL指向本地服务地址即可。

3.2 项目结构

ai-smart-ai/ ├── .env ├── config.py ├── prompt_optimizer.py ├── data_generator.py ├── auto_evaluator.py ├── agent_loop.py └── main.py

这个结构是一个最小可运行工程,后面每一节都会对应一个文件。

3.3 公共配置模块

先写一个统一的配置模块,方便其他文件复用。

# 文件路径:config.py import os from dotenv import load_dotenv load_dotenv() OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") OPENAI_BASE_URL = os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1") MODEL_NAME = os.getenv("MODEL_NAME", "gpt-4o-mini")

在编写后续代码之前,需要先确认你的 API 密钥和模型服务地址可以正常访问。建议先用一个最简单的调用测试一下。

4. 实战:用 AI 优化提示词

4.1 场景描述

假设你现在有这样一个提示词:

你是一个助手。请回答用户的问题。

这个提示词太笼统了,不同模型的输出质量会很不稳定。传统做法是开发者手动补充角色、约束、输出格式、示例等信息。现在我们让 AI 来做这件事。

4.2 核心实现

创建一个提示词优化器,输入原始提示词和任务描述,输出优化后的提示词。

# 文件路径:prompt_optimizer.py from openai import OpenAI from config import OPENAI_API_KEY, OPENAI_BASE_URL, MODEL_NAME client = OpenAI(api_key=OPENAI_API_KEY, base_url=OPENAI_BASE_URL) META_PROMPT = """ 你是一位经验丰富的提示词工程专家。你的任务是分析用户提供的原始提示词,并给出优化版本。 分析维度: 1. 角色设定:是否清晰定义了 AI 承担的角色? 2. 任务描述:是否明确了 AI 要完成的具体任务? 3. 约束条件:是否有明确的正面/负面约束? 4. 输出格式:是否规定了输出的结构和格式? 5. 示例引导:是否提供了 few-shot 示例? 请先输出分析,再输出优化后的提示词,格式如下: 【分析】 逐条列出每个维度的不足 【优化后提示词】 给出完整可用的新版提示词 """ def optimize_prompt(original_prompt: str, task_description: str = "") -> str: user_content = f"原始提示词:\n{original_prompt}\n" if task_description: user_content += f"\n任务描述:\n{task_description}\n" resp = client.chat.completions.create( model=MODEL_NAME, messages=[ {"role": "system", "content": META_PROMPT}, {"role": "user", "content": user_content} ], temperature=0.3 ) return resp.choices[0].message.content

4.3 运行与验证

# 运行示例:python prompt_optimizer.py if __name__ == "__main__": original = "你是一个助手。请回答用户的问题。" improved = optimize_prompt( original, task_description="这是一个电商客服助手,需要回答用户关于订单、退换货、物流的问题。" ) print(improved)

预期输出会包含两部分,一部分是对原提示词不足之处的分析,另一部分是优化后的提示词。以下是可能的输出形态:

【分析】 1. 角色设定:未明确 AI 是电商客服助手,导致回答风格不统一。 2. 任务描述:未限定问题范围,模型可能回答与电商无关的内容。 3. 约束条件:未说明禁止提供虚假物流信息。 4. 输出格式:未规定回答结构。 【优化后提示词】 你是一位专业的电商客服助手...

这里要注意,不同的模型服务对输出格式的遵循程度不同。如果你希望优化结果更加稳定,可以在 META_PROMPT 中加入“必须严格按 JSON 格式输出”的约束,并在代码中解析 JSON。

4.4 如何把优化结果接入现有流程

优化后的提示词,可以直接写入一个配置文件,例如prompts.py,然后在业务代码中引用。核心思路是:提示词不再是一段写死的字符串,而是由 AI 持续优化、由人工审核后固化的资产。

5. 实战:用 AI 生成合成数据

5.1 场景描述

假设你在做一个法律问答机器人,手头只有 20 条人工标注的高质量问答对,但微调模型时想要 200 条。这时候,可以写一个合成数据生成器,基于种子样本生成更多样化的数据。

5.2 核心实现

# 文件路径:data_generator.py import json from openai import OpenAI from config import OPENAI_API_KEY, OPENAI_BASE_URL, MODEL_NAME client = OpenAI(api_key=OPENAI_API_KEY, base_url=OPENAI_BASE_URL) GENERATION_PROMPT = """ 你是一个数据增强专家。根据给定的种子问答对,生成新的问答对。要求: 1. 问题必须与种子问题属于同一主题,但表述不能完全重复; 2. 答案必须正确、完整,信息不能与种子答案冲突; 3. 输出必须是 JSON 数组格式,每个元素包含 question 和 answer 两个字段。 种子样本: {seed_examples} 请生成 {num_samples} 条新样本。 """ def generate_synthetic_samples(seed_examples: list, num_samples: int = 10) -> list: seed_text = json.dumps(seed_examples, ensure_ascii=False, indent=2) prompt = GENERATION_PROMPT.format( seed_examples=seed_text, num_samples=num_samples ) resp = client.chat.completions.create( model=MODEL_NAME, messages=[ {"role": "system", "content": "你只输出合法 JSON,不要输出多余文字。"}, {"role": "user", "content": prompt} ], temperature=0.7 ) content = resp.choices[0].message.content # 有些模型会输出 ```json 包裹,这里做一次清洗 content = content.strip().removeprefix("```json").removesuffix("```").strip() return json.loads(content)

5.3 运行与验证

# 运行示例:python data_generator.py if __name__ == "__main__": seeds = [ {"question": "合同纠纷的诉讼时效是多久?", "answer": "根据民法典规定,普通诉讼时效为三年。"}, {"question": "劳动仲裁需要准备哪些材料?", "answer": "需要准备身份证、劳动合同、工资流水等材料。"} ] samples = generate_synthetic_samples(seeds, num_samples=5) for item in samples: print(item)

5.4 人工抽检与风险控制

合成数据最大的风险是“看起来对,实际上错”。因此,不能把大模型生成的合成数据直接用于微调,需要加入人工抽检环节。我建议的流程是:

  1. 先用大模型批量生成候选数据;
  2. 按比例抽检(例如抽 20%);
  3. 抽检通过后再全量进入微调流程;
  4. 对高风险领域(医疗、法律、金融),人工审核比例要提高到 50% 以上。

另外,合成数据通常会放大模型的潜在偏见。生成时可以在提示词中加上“禁止包含歧视性内容”等约束,但这不是绝对保障,人工审核仍然不可或缺。

6. 实战:用 AI 自动化评估模型输出

6.1 场景描述

当你有两个候选提示词版本,或者两个不同的模型版本时,需要评估哪个输出更好。人工看几十条还行,看几百条会崩溃。用 LLM-as-a-Judge 可以批量完成这个任务。

6.2 实现一个评估器

# 文件路径:auto_evaluator.py import json from openai import OpenAI from config import OPENAI_API_KEY, OPENAI_BASE_URL, MODEL_NAME client = OpenAI(api_key=OPENAI_API_KEY, base_url=OPENAI_BASE_URL) EVALUATION_PROMPT = """ 你是一个严格的 AI 输出质量评估专家。请根据以下维度对模型回答进行评分,每个维度 1-5 分: - relevance:是否与问题相关 - completeness:是否完整回答了问题 - clarity:是否清晰易懂 输出 JSON 格式评分结果,包含字段:relevance, completeness, clarity, overall_score, reason。 问题:{question} 回答:{answer} """ def evaluate_response(question: str, answer: str) -> dict: prompt = EVALUATION_PROMPT.format(question=question, answer=answer) resp = client.chat.completions.create( model=MODEL_NAME, messages=[ {"role": "system", "content": "你只输出合法 JSON,不要输出多余文字。"}, {"role": "user", "content": prompt} ], temperature=0.2 ) content = resp.choices[0].message.content content = content.strip().removeprefix("```json").removesuffix("```").strip() return json.loads(content)

6.3 批量对比两个模型

下面这段代码演示了如何批量对比两个模型输出,并计算平均分。

# 文件路径:auto_evaluator.py(追加) def batch_evaluate(questions: list, model_a_func, model_b_func, sample_size: int = 10): """ 对同一批问题,分别用两个模型输出,并用 AI 评分对比。 model_a_func / model_b_func 是接受 question 返回 answer 的函数。 """ results = [] for q in questions[:sample_size]: answer_a = model_a_func(q) answer_b = model_b_func(q) score_a = evaluate_response(q, answer_a) score_b = evaluate_response(q, answer_b) results.append({ "question": q, "answer_a": answer_a, "answer_b": answer_b, "score_a": score_a, "score_b": score_b }) return results

6.4 评估器的设计要点

LLM-as-a-Judge 看起来很简单,但有几个细节需要注意:

  1. 评估维度要具体:不要只让模型打一个总分,要拆成多个维度,每个维度有明确的评分标准,这样结果更稳定。
  2. 模型偏见:大模型评估时会有“位置偏见”,即更倾向于排在后面的答案。所以 A/B 对比时,可以把顺序反过来再测一遍。
  3. 评估模型与被评估模型的差异:如果评估模型和被评估模型是同一个模型,可能出现“自吹自擂”的情况。条件允许时,评估模型应该比被评估模型能力更强,或者使用不同的模型。

7. 实战:构建 Agent 自我迭代闭环

7.1 场景描述

最后这个示例更进阶:构建一个可以“自我修正”的 Agent。它执行任务后,会检查结果质量,如果不达标,会自动调整提示词重新执行。

以自动生成商品文案为例:

  1. Agent 先生成文案;
  2. 用评估器检查文案质量分;
  3. 如果分数低于阈值,让优化器分析原因并改写提示词;
  4. 重新生成,最多循环 N 次。

7.2 核心实现

# 文件路径:agent_loop.py from openai import OpenAI from config import OPENAI_API_KEY, OPENAI_BASE_URL, MODEL_NAME client = OpenAI(api_key=OPENAI_API_KEY, base_url=OPENAI_BASE_URL) BASE_WRITE_PROMPT = """ 你是一个电商文案专家。请为以下商品写一段文案。 商品名称:{product_name} 商品卖点:{features} 文案风格:{style} """ REFINE_PROMPT = """ 之前的文案存在以下问题: {feedback} 请参考以下建议,重新生成文案: {advice} """ def check_quality(product_name: str, features: str, style: str, draft: str) -> tuple: """ 返回 (是否通过, 评分结果) 这里简化处理,让模型判断是否达标。 """ check_prompt = f""" 你是文案质量审核员。请评价以下电商文案是否达到合格标准。 要求:文案需要包含至少 3 个商品卖点,语言通顺,有购买吸引力。 商品:{product_name} 卖点:{features} 文案:{draft} 请先输出通过或不通过,再输出改进建议。格式: 结果:通过/不通过 建议:xxx """ resp = client.chat.completions.create( model=MODEL_NAME, messages=[{"role": "user", "content": check_prompt}], temperature=0.2 ) result = resp.choices[0].message.content passed = "通过" in result and "不通过" not in result advice = result.replace("结果:", "").replace("建议:", "") return passed, advice def write_and_refine(product_name: str, features: str, style: str, max_rounds: int = 3) -> str: prompt = BASE_WRITE_PROMPT.format( product_name=product_name, features=features, style=style ) draft = "" for i in range(max_rounds): resp = client.chat.completions.create( model=MODEL_NAME, messages=[{"role": "user", "content": prompt}], temperature=0.7 ) draft = resp.choices[0].message.content passed, advice = check_quality(product_name, features, style, draft) print(f"第 {i+1} 轮生成,审核结果:{'通过' if passed else '不通过'}") if passed: return draft # 未通过时,让模型基于建议重新生成 prompt = REFINE_PROMPT.format(feedback=advice, advice=advice) return draft if __name__ == "__main__": final_copy = write_and_refine( product_name="智能保温杯", features="316不锈钢内胆、24小时保温、智能温度显示、防漏杯盖", style="年轻时尚" ) print("最终文案:") print(final_copy)

7.3 这个闭环的价值

这个示例的价值不在于它是一个完美的生产级 Agent,而在于它展示了一个核心思想:AI 应用不应该是一次性调用的“死流程”,而是可以感知结果、自我修正的“活系统”。

在这个闭环里,AI 担任了三重角色:

  • 写作者(生成内容)
  • 评估者(判断质量)
  • 优化者(提供建议)

三者互相配合,形成一个自动反馈循环。如果把这个思路扩展到代码生成、数据分析、报告撰写等任务,就是一个通用的 Agent 框架雏形。

8. 常见问题与排查思路

8.1 常见报错对照表

问题现象常见原因解决思路
调用 API 超时网络不稳定,或模型服务负载过高增加超时时间,设置重试机制;检查模型服务状态
输出不是合法 JSON模型没有严格遵循格式指令在 prompt 中强制指定输出格式;增加输出清洗逻辑
提示词优化结果不稳定temperature 设置过高调低 temperature 到 0.2-0.3;固定随机种子
评估结果与人工判断差距大评估维度定义不够具体细化评估维度,增加评分标准描述;增加 few-shot 示例
Agent 循环陷入死循环没有设置最大循环次数增加 max_rounds 限制;设置分数阈值提前退出
合成数据质量差种子样本太单一扩充种子样本的多样性;增加生成轮次后人工筛选

8.2 高频排查清单

如果遇到问题,建议按以下顺序排查:

  1. 先确认 API 连通性:用最简单的 prompt 测试模型服务是否正常;
  2. 再确认输出格式:打印模型原始输出,检查是否有额外字符导致 JSON 解析失败;
  3. 检查环境变量:确认.env中的 API Key 和 Base URL 是否生效;
  4. 调整模型参数:temperature 过高会导致输出不稳定,建议评估类任务设为 0.2 以下;
  5. 增加日志:在关键环节打印输入输出,定位是哪一步出了问题。

8.3 关于成本控制

每轮 Agent 迭代都会产生多次模型调用,成本会成倍增加。建议做到两点:

  • 设置调用次数上限;
  • 使用评估器和生成器分离的模型等级,评估任务使用更便宜的模型。

如果对成本敏感,可以先在小样本集上验证效果,再扩大规模。

9. 最佳实践与工程建议

9.1 明确“人机协作”边界

“用 AI 让 AI 更聪明”不等于完全脱离人工。在工程实践中,最合理的方式是:

  • AI 负责规模化生成、初筛、批量评估;
  • 人负责制定标准、审核关键样本、处理边界情况。

特别是在内容安全、法律、医疗等高风险场景,必须保留人工审核环节。自动化流程可以显著提高效率,但不能完全替代责任判断。

9.2 日志与可观测性

AI 应用的调试比传统应用更困难,因为同样的输入可能产生不同的输出。因此,日志记录非常重要。

建议在代码中记录以下信息:

  • 每次调用的 prompt 全文;
  • 模型返回的原始输出;
  • 评估分数和判定理由;
  • 运行耗时和 token 消耗。

这样当线上效果出现波动时,才能回溯到具体的失败样本。

9.3 提示词与代码的版本管理

提示词是会持续演化的资产,建议像管理代码一样管理提示词:

  1. 将提示词存放在独立文件中,不要散落在业务代码里;
  2. 使用 Git 管理提示词的每次变更;
  3. 每次修改后,用自动化评估器做回归测试;
  4. 重要变更需要人工审核后再上线。

9.4 保护 API 密钥与最小权限

项目中一定不要把 API Key 硬编码在代码里。使用环境变量或专用的密钥管理服务。同时遵循最小权限原则:每个应用只申请它需要的最小权限,避免一个密钥到处复用。

如果密钥不慎泄露,立即在服务商后台吊销并重新生成。

9.5 设计上预留“人工降级”开关

任何 AI 自动化流程都应该设计人工降级方案。比如 Agent 连续多次达不到质量阈值时,可以把任务转交人工;线上业务流程应该支持随时切换回旧的稳定版本。这样即使 AI 出 bug,也不会影响核心业务。

10. 总结与下一步学习路线

这篇文章围绕“Making AI Smarter with AI”这个主题,从四个层次展开:

  1. 提示词优化:让 AI 分析并优化提示词;
  2. 合成数据生成:让 AI 生成训练和评测数据;
  3. 自动化评估:用 LLM-as-a-Judge 批量评估输出质量;
  4. Agent 自我迭代:构建感知结果、自动修正的执行闭环。

这四个层次可以独立使用,也可以组合成完整的 AI 工程流水线。代码我已经尽量简化,你可以直接复制到自己的项目中修改使用。如果你在自己环境下运行遇到问题,优先检查模型服务地址、API Key 和依赖版本,大部分报错都出在环境差异上。

更进一步,可以往这几个方向深入学习:

  • RAG 与向量检索:让 AI 能读取外部知识库再回答问题,是当前企业应用的主流方向;
  • 微调与对齐:如果基础模型效果不够,可以考虑在垂直领域做微调;
  • 多 Agent 协作:把“写作者 + 评估者 + 优化者”扩展成多个 Agent 协作的复杂系统;
  • 模型评估体系:学习更严谨的评测集设计、评估指标和人工评估方法。

如果这篇内容对你有帮助,可以收藏备用。也建议你手头准备一个项目,把思路落地成代码,一定会有不少收获。运行中遇到任何卡点,欢迎在评论区交流讨论。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询