[ PROMPT_NODE_22912 ]
constraints
[ SKILL_DOCUMENTATION ]
# 综合约束模式
Guidance 中正则表达式约束、基于语法的生成和 Token 修复指南。
## 目录
- 正则表达式约束
- 基于语法的生成
- Token 修复
- 选择约束
- 复杂模式
- 性能优化
## 正则表达式约束
### 基本模式
#### 数值约束
python
from guidance import models, gen
lm = models.Anthropic("claude-sonnet-4-5-20250929")
# 整数 (正数)
lm += "Age: " + gen("age", regex=r"[0-9]+")
# 整数 (含负数)
lm += "Temperature: " + gen("temp", regex=r"-?[0-9]+")
# 浮点数 (正数)
lm += "Price: $" + gen("price", regex=r"[0-9]+.[0-9]{2}")
# 浮点数 (含负数和可选小数)
lm += "Value: " + gen("value", regex=r"-?[0-9]+(.[0-9]+)?")
# 百分比 (0-100)
lm += "Progress: " + gen("progress", regex=r"(100|[0-9]{1,2})")
# 范围 (1-5 星)
lm += "Rating: " + gen("rating", regex=r"[1-5]") + " stars"
#### 文本约束
python
# 仅字母
lm += "Name: " + gen("name", regex=r"[A-Za-z]+")
# 字母加空格
lm += "Full Name: " + gen("full_name", regex=r"[A-Za-z ]+")
# 字母数字
lm += "Username: " + gen("username", regex=r"[A-Za-z0-9_]+")
# 首字母大写单词
lm += "Title: " + gen("title", regex=r"[A-Z][a-z]+( [A-Z][a-z]+)*")
# 仅小写
lm += "Code: " + gen("code", regex=r"[a-z0-9-]+")
# 特定长度
lm += "ID: " + gen("id", regex=r"[A-Z]{3}-[0-9]{6}") # 例如 "ABC-123456"
#### 日期和时间约束
python
# 日期 (YYYY-MM-DD)
lm += "Date: " + gen("date", regex=r"d{4}-d{2}-d{2}")
# 日期 (MM/DD/YYYY)
lm += "Date: " + gen("date_us", regex=r"d{2}/d{2}/d{4}")
# 时间 (HH:MM)
lm += "Time: " + gen("time", regex=r"d{2}:d{2}")
# 时间 (HH:MM:SS)
lm += "Time: " + gen("time_full", regex=r"d{2}:d{2}:d{2}")
# ISO 8601 日期时间
lm += "Timestamp: " + gen(
"timestamp",
regex=r"d{4}-d{2}-d{2}Td{2}:d{2}:d{2}Z"
)
# 年份 (YYYY)
lm += "Year: " + gen("year", regex=r"(19|20)d{2}")
# 月份名称
lm += "Month: " + gen(
"month",
regex=r"(January|February|March|April|May|June|July|August|September|October|November|December)"
)
#### 联系信息
python
# 电子邮件
lm += "Email: " + gen(
"email",
regex=r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}"
)
# 电话 (美国格式)
lm += "Phone: " + gen("phone", regex=r"d{3}-d{3}-d{4}")
# 电话 (国际格式)
lm += "Phone: " + gen("phone_intl", regex=r"+[0-9]{1,3}-[0-9]{1,14}")
# 邮政编码 (美国