受限生成:完整指南与示例
掌握受限生成——通过提示控制输出格式——最适合结构化数据
受限生成:完整指南与示例
掌握受限生成——通过提示控制输出格式——最适合结构化数据
受限生成:完整指南 什么是受限生成? 受限生成是一种提示技术,通过提示控制输出格式。它对结构化数据特别有效。何时使用受限生成
受限生成:完整指南
什么是受限生成?
受限生成是一种提示技术,通过提示控制输出格式。它对结构化数据特别有效。
何时使用受限生成
在以下情况下使用此技术:
工作原理
受限生成的核心思想:
基本示例
python
from openai import OpenAIclient = OpenAI()
def constrained_generation_prompt(task: str, context: str = "") -> str:
"""应用受限生成技术。"""
# 受限生成提示结构
system = """你是一位专业的AI助手。
对每个任务应用系统化推理。
要精确、准确且结构良好。"""
# 受限生成的核心提示
prompt = f"""任务:{task}
{"上下文:" + context if context else ""}
请通过提示控制输出格式,以准确完成此任务。"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": prompt}
],
temperature=0.3,
max_tokens=1500
)
return response.choices[0].message.content
使用示例
result = constrained_generation_prompt(
task="分析微服务架构的优缺点",
context="针对一个拥有5名开发人员和1000名用户的初创公司"
)
print(result)
高级实现
python
from pydantic import BaseModel
from typing import Optionalclass PromptResult(BaseModel):
output: str
technique: str = "Constrained Generation"
confidence: Optional[float] = None
reasoning: Optional[str] = None
class ConstrainedGenerationPrompter:
"""生产就绪的受限生成实现。"""
def __init__(self, model: str = "gpt-4o"):
self.client = OpenAI()
self.model = model
self.technique = "Constrained Generation"
def run(self, task: str, **kwargs) -> PromptResult:
"""执行受限生成提示。"""
response = self.client.chat.completions.create(
model=self.model,
messages=self._build_messages(task, **kwargs),
temperature=kwargs.get("temperature", 0.3),
max_tokens=kwargs.get("max_tokens", 2000)
)
content = response.choices[0].message.content
return PromptResult(
output=content,
technique=self.technique
)
def _build_messages(self, task: str, **kwargs) -> list[dict]:
"""构建受限生成特定的消息。"""
system = f"""你是一位使用{self.technique}解决任务的专家。
系统化地应用{desc}。
格式:提供清晰、结构化的响应。"""
return [
{"role": "system", "content": system},
{"role": "user", "content": self._build_prompt(task, **kwargs)}
]
def _build_prompt(self, task: str, **kwargs) -> str:
"""构建受限生成的具体提示。"""
return f"""使用{self.technique},完成以下任务:
任务:{task}
应用{desc}以获得高质量答案。"""
使用
prompter = ConstrainedGenerationPrompter()
result = prompter.run("编写一个Python函数来安全地解析JSON")
print(result.output)
实际应用案例
案例1:结构化数据
python
专门用于结构化数据
prompter = ConstrainedGenerationPrompter(model="gpt-4o")示例:结构化数据任务
result = prompter.run(
f"解决这个结构化数据问题:[你的具体问题]"
)
print(f"解决方案:{result.output}")
案例2:内容生成
python
应用于内容创作
result = prompter.run(
"写一篇关于AI代理的技术博客引言",
temperature=0.7, # 创意任务使用较高温度
max_tokens=500
)
print(result.output)
与其他技术的比较
常见错误
衡量效果
python
import json
from statistics import meandef evaluate_prompt_quality(
prompter: ConstrainedGenerationPrompter,
test_cases: list[dict],
n_runs: int = 3
) -> dict:
"""通过多次运行评估提示质量。"""
scores = []
for test in test_cases:
run_scores = []
for _ in range(n_runs):
result = prompter.run(test["task"])
# 根据预期输出评分
score = 1.0 if test.get("expected") in result.output else 0.5
run_scores.append(score)
scores.append(mean(run_scores))
return {
"technique": "Constrained Generation",
"avg_score": mean(scores),
"test_cases": len(test_cases)
}
资源
相关工具