ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent
|
||||
DATA = ROOT / "data"
|
||||
|
||||
VERSIONS = ["v2", "v2.1", "v3", "v4-beta", "2026.08", "release-候选"]
|
||||
ACTIONS = ["先运行测试", "先备份数据", "检查权限", "重新读取文件", "核对验收条件", "查看变更记录"]
|
||||
STATUSES = ["ok", "ready", "pending", "degraded", "accepted", "retry"]
|
||||
WORDS = ["当前状态", "请求编号", "缓存策略", "错误原因", "目标路径", "发布说明"]
|
||||
LITERALS = ["DELETE", "PATCH", "ROLLBACK", "dry_run", "API_KEY", "status"]
|
||||
ENGLISH = [
|
||||
"Please restart the service before retrying.",
|
||||
"The file was not changed.",
|
||||
"Run the migration only once.",
|
||||
"This value must remain unchanged.",
|
||||
"Do not remove the assertion.",
|
||||
]
|
||||
|
||||
ARTICLE_TYPES = [
|
||||
"新闻报道", "API 参考", "故障复盘", "发布说明", "操作手册",
|
||||
"FAQ", "设计文档", "教程", "变更公告", "安全通告",
|
||||
]
|
||||
|
||||
TEMPLATES = {
|
||||
"zh": (
|
||||
"请把下面的中文段落按项目文档规范修订,只输出修订后的文本。\n\n他说:\"今天发布 {version}\",随后补充:\"{action}\"。",
|
||||
"他说:“今天发布 {version}”,随后补充:“{action}”。",
|
||||
),
|
||||
"mixed": (
|
||||
"请修订下面的混合技术说明,只输出结果。\n\n调用 `{method}()` 后,服务返回 {{\"status\": \"{status}\"}}。说明文字中写着:\"{action}\"。",
|
||||
"调用 `{method}()` 后,服务返回 {{\"status\": \"{status}\"}}。说明文字中写着:“{action}”。",
|
||||
),
|
||||
"english": (
|
||||
"请修订下面的文章,只输出结果。\n\n原文引用如下:\"{english}\" 这段英文必须保持原样。",
|
||||
"原文引用如下:\"{english}\" 这段英文必须保持原样。",
|
||||
),
|
||||
"python": (
|
||||
"请修订下面的 Markdown 文档,只输出结果。\n\n```python\n# 中文注释:显示 \"{word}\"\nname = \"{literal}\"\nprint(name)\n```\n代码不能被改坏。",
|
||||
"```python\n# 中文注释:显示 “{word}”\nname = \"{literal}\"\nprint(name)\n```\n代码不能被改坏。",
|
||||
),
|
||||
"javascript": (
|
||||
"请修订下面的 JavaScript 示例,只输出结果。\n\n```javascript\n// 中文注释:显示 \"{word}\"\nconst name = \"{literal}\";\nconsole.log(name);\n```\n代码不能被改坏。",
|
||||
"```javascript\n// 中文注释:显示 “{word}”\nconst name = \"{literal}\";\nconsole.log(name);\n```\n代码不能被改坏。",
|
||||
),
|
||||
"java": (
|
||||
"请修订下面的 Java 示例,只输出结果。\n\n```java\n// 中文注释:显示 \"{word}\"\nString name = \"{literal}\";\nSystem.out.println(name);\n```\n代码不能被改坏。",
|
||||
"```java\n// 中文注释:显示 “{word}”\nString name = \"{literal}\";\nSystem.out.println(name);\n```\n代码不能被改坏。",
|
||||
),
|
||||
"go": (
|
||||
"请修订下面的 Go 示例,只输出结果。\n\n```go\n// 中文注释:显示 \"{word}\"\nname := \"{literal}\"\nfmt.Println(name)\n```\n代码不能被改坏。",
|
||||
"```go\n// 中文注释:显示 “{word}”\nname := \"{literal}\"\nfmt.Println(name)\n```\n代码不能被改坏。",
|
||||
),
|
||||
"rust": (
|
||||
"请修订下面的 Rust 示例,只输出结果。\n\n```rust\n// 中文注释:显示 \"{word}\"\nlet name = \"{literal}\";\nprintln!(\"{{}}\", name);\n```\n代码不能被改坏。",
|
||||
"```rust\n// 中文注释:显示 “{word}”\nlet name = \"{literal}\";\nprintln!(\"{{}}\", name);\n```\n代码不能被改坏。",
|
||||
),
|
||||
"sql": (
|
||||
"请修订下面的 SQL 示例,只输出结果。\n\n```sql\n-- 中文注释:显示 \"{word}\"\nSELECT \"{literal}\" AS status;\n```\n代码不能被改坏。",
|
||||
"```sql\n-- 中文注释:显示 “{word}”\nSELECT \"{literal}\" AS status;\n```\n代码不能被改坏。",
|
||||
),
|
||||
"shell": (
|
||||
"请修订下面的 Shell 示例,只输出结果。\n\n```bash\n# 中文注释:显示 \"{word}\"\nname=\"{literal}\"\nprintf '%s\\n' \"$name\"\n```\n代码不能被改坏。",
|
||||
"```bash\n# 中文注释:显示 “{word}”\nname=\"{literal}\"\nprintf '%s\\n' \"$name\"\n```\n代码不能被改坏。",
|
||||
),
|
||||
"yaml": (
|
||||
"请修订下面的 YAML 配置,只输出结果。\n\n```yaml\n# 中文注释:显示 \"{word}\"\nname: \"{literal}\"\n```\n代码不能被改坏。",
|
||||
"```yaml\n# 中文注释:显示 “{word}”\nname: \"{literal}\"\n```\n代码不能被改坏。",
|
||||
),
|
||||
"markdown": (
|
||||
"请修订下面的 Markdown 教程,只输出结果。\n\n说明文字写着:\"{action}\";命令 `run-{method}` 必须保持。",
|
||||
"说明文字写着:“{action}”;命令 `run-{method}` 必须保持。",
|
||||
),
|
||||
"nested": (
|
||||
"请修订下面的中文段落,只输出结果。\n\n她说:\"他说“{action}”,然后才修改。\"",
|
||||
"她说:“他说‘{action}’,然后才修改。”",
|
||||
),
|
||||
"comment": (
|
||||
"请修订下面的说明,只输出结果。\n\n代码注释里的自然语言引用是:\"{action}\";Python 字符串 `{quote_literal}` 的语法必须保持。",
|
||||
"代码注释里的自然语言引用是:“{action}”;Python 字符串 `{quote_literal}` 的语法必须保持。",
|
||||
),
|
||||
"quote": (
|
||||
"请修订下面的中文报道,只输出结果。\n\n报告引用用户原话:\"{action}\"。英文原句 \"{english}\" 也要原样保留。",
|
||||
"报告引用用户原话:“{action}”。英文原句 \"{english}\" 也要原样保留。",
|
||||
),
|
||||
"json": (
|
||||
"请修订下面的接口文档,只输出结果。\n\n中文说明:\"{word}必须存在\"。请求体示例:{{\"message\": \"{status}\"}}。",
|
||||
"中文说明:“{word}必须存在”。请求体示例:{{\"message\": \"{status}\"}}。",
|
||||
),
|
||||
}
|
||||
KINDS = list(TEMPLATES)
|
||||
CODE_LANGUAGES = {
|
||||
"python": "Python", "javascript": "JavaScript", "java": "Java",
|
||||
"go": "Go", "rust": "Rust", "sql": "SQL", "shell": "Shell",
|
||||
"yaml": "YAML", "markdown": "Markdown",
|
||||
}
|
||||
CODE_KINDS = set(CODE_LANGUAGES) | {"comment"}
|
||||
SCOPE_RULE = (
|
||||
"作用域规则:只把代码注释中的中文自然语言直引号改成中文弯引号;"
|
||||
"字符串/字符字面量、格式化占位符、标识符、JSON 和 SQL 语法中的 ASCII 引号必须逐字保留。"
|
||||
"示例:# 中文注释:显示 \"状态\" → # 中文注释:显示“状态”;name = \"status\" 不变。"
|
||||
)
|
||||
|
||||
|
||||
def make(split: str, n: int):
|
||||
rows = []
|
||||
split_offset = {"train": 0, "eval": 17, "boundary": 31}[split]
|
||||
for i in range(n):
|
||||
kind = KINDS[(i + split_offset) % len(KINDS)]
|
||||
values = {
|
||||
"version": VERSIONS[(i + split_offset) % len(VERSIONS)],
|
||||
"action": ACTIONS[(i * 3 + split_offset) % len(ACTIONS)],
|
||||
"status": STATUSES[(i * 5 + split_offset) % len(STATUSES)],
|
||||
"word": WORDS[(i * 7 + split_offset) % len(WORDS)],
|
||||
"literal": LITERALS[(i * 11 + split_offset) % len(LITERALS)],
|
||||
"quote_literal": LITERALS[(i * 13 + split_offset) % len(LITERALS)],
|
||||
"english": ENGLISH[(i * 2 + split_offset) % len(ENGLISH)],
|
||||
"method": ["reset", "validate", "rebuild", "deploy", "rollback", "inspect"][(i + split_offset) % 6],
|
||||
}
|
||||
prompt, target = (x.format(**values) for x in TEMPLATES[kind])
|
||||
if kind in CODE_KINDS:
|
||||
prompt = SCOPE_RULE + "\n\n" + prompt
|
||||
article_type = ARTICLE_TYPES[(i * 5 + split_offset) % len(ARTICLE_TYPES)]
|
||||
language = CODE_LANGUAGES.get(kind, "中文/英文自然语言")
|
||||
suffix = f"(案例编号 {split}-{i:03d};体裁={article_type};语言={language};请保持事实和代码不变。)"
|
||||
rows.append({"id": f"{split}-{i:04d}", "kind": kind, "article_type": article_type,
|
||||
"language": language, "prompt": prompt + "\n" + suffix,
|
||||
"target": target + "\n" + suffix})
|
||||
return rows
|
||||
|
||||
|
||||
def write(name: str, rows):
|
||||
path = DATA / name
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text("\n".join(json.dumps(r, ensure_ascii=False) for r in rows) + "\n", encoding="utf-8")
|
||||
return hashlib.sha256(path.read_bytes()).hexdigest()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
DATA.mkdir(exist_ok=True)
|
||||
hashes = {
|
||||
"train": write("train.jsonl", make("train", 1024)),
|
||||
"eval": write("eval.jsonl", make("eval", 256)),
|
||||
"boundary": write("boundary.jsonl", make("boundary", 256)),
|
||||
}
|
||||
print(json.dumps(hashes, indent=2))
|
||||
Reference in New Issue
Block a user