Pi Agent: 提示词模板

最后更新:2026-08-31

好的提示词就像好的菜谱——照着做,每次都能出好菜。


1. 为什么需要提示词模板

直接写提示词的问题:

提示词模板解决这些问题:

特性 说明
可复用 一次定义,反复调用
可参数化 用变量替换,适配不同场景
可共享 团队共享模板库
可测试 模板可以单独测试和优化

2. 内置模板

Pi Agent 提供常用场景的内置模板:

模板 用途
code_review 代码审查
bug_fix Bug 修复
test_gen 测试生成
doc_gen 文档生成
translate 翻译
summarize 摘要
refactor 重构

使用内置模板:

PYTHON
from pi_agent import Agent

agent = Agent(name="reviewer")
result = agent.run(template="code_review", code="def add(a,b): return a+b")

3. 自定义模板

(1) YAML 模板文件

创建 ~/.pi-agent/templates/code_explain.yaml

YAML
name: code_explain
description: "解释代码的功能和原理"
system: |
  你是一个代码解释专家。用简洁易懂的语言解释代码,
  包括:1) 功能概述 2) 关键逻辑 3) 潜在问题
template: |
  请解释以下 {{ language }} 代码:

  ```{{ language }}
  {{ code }}

要求:


### (2) Python 定义模板

```python
from pi_agent import PromptTemplate

explain_template = PromptTemplate(
    name="code_explain",
    description="解释代码的功能和原理",
    system="你是代码解释专家,用简洁易懂的语言解释代码",
    template="请解释以下 {language} 代码:\n{code}",
    variables=["language", "code"]
)

agent = Agent(name="explainer")
agent.add_template(explain_template)

result = agent.run(
    template="code_explain",
    language="python",
    code="def fib(n): return n if n < 2 else fib(n-1) + fib(n-2)"
)

4. 模板变量与条件

(1) 基本变量

YAML
template: |
  将以下文本从 {{ source_lang }} 翻译成 {{ target_lang }}:
  {{ text }}

(2) 条件渲染

YAML
template: |
  请审查以下代码:
  {{ code }}

  {% if focus_area %}
 重点关注 {{ focus_area }} 方面。
  {% endif %}

  {% if severity == "strict" %}
  请严格审查,列出所有问题。
  {% else %}
  只列出严重问题。
  {% endif %}

(3) 循环

YAML
template: |
  请检查以下文件是否符合编码规范:
  {% for file in files %}
  - {{ file }}
  {% endfor %}

5. 模板组合

▶ 示例 1:多模板工作流(难度⭐⭐)

PYTHON
from pi_agent import Agent, PromptTemplate

review_template = PromptTemplate(
    name="review",
    template="审查代码:{code}\n关注点:{focus}"
)

fix_template = PromptTemplate(
    name="fix",
    template="根据审查意见修复代码:{review_result}\n原代码:{code}"
)

test_template = PromptTemplate(
    name="test",
    template="为以下代码写测试:{code}"
)

agent = Agent(name="pipeline")

code = "def add(a, b): return a + b"

review_result = agent.run(template="review", code=code, focus="安全性")
fix_result = agent.run(template="fix", review_result=review_result, code=code)
test_result = agent.run(template="test", code=fix_result)

6. 模板测试与优化

(1) A/B 测试

PYTHON
from pi_agent import Agent

template_a = "请审查这段代码:{code}"
template_b = "作为高级工程师,请严格审查这段代码的安全性、性能和可读性:{code}"

agent = Agent(name="ab_test")
result_a = agent.run(template=template_a, code=sample_code)
result_b = agent.run(template=template_b, code=sample_code)

(2) 模板评分

PYTHON
from pi_agent import TemplateEvaluator

evaluator = TemplateEvaluator()
score = evaluator.evaluate(
    template="review",
    test_cases=[
        {"input": {"code": "x=1"}, "expected_contains": ["安全", "性能"]},
        {"input": {"code": "def hello(): pass"}, "expected_contains": ["建议"]}
    ]
)
print(f"模板评分: {score}")

❓ 常见问题

Q 模板变量和 Python f-string 有什么区别?
A 模板变量用 {{ var }}(Jinja2 风格),在渲染时替换,支持条件和循环。f-string 是 Python 语法,不能存到配置文件中。
Q 模板太多怎么管理?
A 按目录组织:templates/coding/templates/writing/templates/review/。Pi Agent 会递归扫描所有子目录。
Q 团队共享模板的最佳方式?
A 把模板目录放在 Git 仓库中,每人 clone 到 ~/.pi-agent/templates/。或发布为 Pi Agent 包。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个简单的翻译模板,支持 source_lang 和 target_lang 参数。
  2. 进阶题(难度⭐⭐):创建一个带条件渲染的代码审查模板,根据 severity 参数调整审查严格度。
  3. 挑战题(难度⭐⭐⭐):设计一套完整的开发模板库(审查→修复→测试),并测试其效果。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏