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,112 @@
|
||||
from pathlib import Path
|
||||
from xml.etree import ElementTree
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
CHAPTER_1_LOCALE_ANCHORS = {
|
||||
"es": {
|
||||
2: ("Posentrenamiento", "externalizado"),
|
||||
3: ("Prompt del sistema", "Sin historial"),
|
||||
},
|
||||
"ja": {
|
||||
2: ("ポストトレーニング", "外部化学習"),
|
||||
3: ("システム", "操作の繰り返し"),
|
||||
},
|
||||
"tr": {
|
||||
2: ("Eğitim sonrası", "Dışsallaştırılmış öğrenme"),
|
||||
3: ("Sistem istemi", "Tekrarlanan işlemler"),
|
||||
},
|
||||
}
|
||||
|
||||
CHAPTER_3_LOCALE_ANCHORS = {
|
||||
"ar": {
|
||||
10: ("ملخص عالمي", "الوثيقة الأصلية"),
|
||||
12: ("غير وكيلي", "ReAct"),
|
||||
},
|
||||
"es": {
|
||||
10: ("Resumen general", "Documento original"),
|
||||
12: ("no agéntico", "ReAct"),
|
||||
},
|
||||
"hu": {
|
||||
10: ("globális összegzés", "Eredeti dokumentum"),
|
||||
12: ("Nem ágenses RAG", "ReAct"),
|
||||
},
|
||||
"id": {
|
||||
10: ("Ringkasan global", "Dokumen asli"),
|
||||
12: ("RAG non-agentik", "ReAct"),
|
||||
},
|
||||
"ja": {
|
||||
10: ("全体要約", "元の文書"),
|
||||
12: ("非エージェント", "ReAct"),
|
||||
},
|
||||
"ru": {
|
||||
10: ("Глобальное резюме", "Исходный документ"),
|
||||
12: ("Неагентный RAG", "ReAct"),
|
||||
},
|
||||
"ta": {
|
||||
10: ("Global summary", "Original document"),
|
||||
12: ("ஏஜெண்டிக் RAG", "ReAct"),
|
||||
},
|
||||
"tr": {
|
||||
10: ("Genel özet", "Orijinal belge"),
|
||||
12: ("Agentic olmayan RAG", "ReAct"),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def svg_text(locale: str, chapter: int, figure: int) -> str:
|
||||
path = ROOT / f"book-{locale}" / "images" / f"fig{chapter}-{figure}.svg"
|
||||
root = ElementTree.parse(path).getroot()
|
||||
return "\n".join(text.strip() for text in root.itertext() if text.strip())
|
||||
|
||||
|
||||
def assert_anchors(locale: str, chapter: int, figure: int, anchors: tuple[str, ...]) -> None:
|
||||
text = " ".join(svg_text(locale, chapter, figure).split()).casefold()
|
||||
for anchor in anchors:
|
||||
assert (
|
||||
anchor.casefold() in text
|
||||
), f"{locale} Figure {chapter}-{figure} is missing {anchor!r}"
|
||||
|
||||
|
||||
def test_chapter_1_localized_figures_match_their_captions():
|
||||
for locale, localized_anchors in CHAPTER_1_LOCALE_ANCHORS.items():
|
||||
for figure, anchors in localized_anchors.items():
|
||||
assert_anchors(locale, 1, figure, anchors)
|
||||
assert_anchors(locale, 1, 4, ("convert_currency", "assistant.reasoning"))
|
||||
assert_anchors(locale, 1, 5, ("$web_search", "code_interpreter"))
|
||||
|
||||
assert_anchors("es", 1, 6, ("while not done:", "SWE-bench"))
|
||||
|
||||
|
||||
def test_chapter_3_localized_figures_match_their_captions():
|
||||
common_anchors = {
|
||||
5: ("BM25", "④"),
|
||||
6: ("Word2Vec", "2013"),
|
||||
7: ("O(",),
|
||||
9: ("0.87", "8.4"),
|
||||
13: ("knowledge_base_search", "code_interpreter"),
|
||||
14: ("ACME", "Anthropic"),
|
||||
}
|
||||
|
||||
for locale, localized_anchors in CHAPTER_3_LOCALE_ANCHORS.items():
|
||||
for figure, anchors in common_anchors.items():
|
||||
assert_anchors(locale, 3, figure, anchors)
|
||||
for figure, anchors in localized_anchors.items():
|
||||
assert_anchors(locale, 3, figure, anchors)
|
||||
|
||||
for locale in CHAPTER_3_LOCALE_ANCHORS:
|
||||
assert_anchors(locale, 3, 11, ("-A", "-B"))
|
||||
|
||||
assert_anchors("es", 3, 8, ("Score(Q,D)", "IDF"))
|
||||
|
||||
|
||||
def test_chapter_4_localized_figures_match_their_captions():
|
||||
expected_anchors = {
|
||||
1: ("server/discover", "tools/list"),
|
||||
2: ("discover_tools", "list_contributors"),
|
||||
3: ("NVDA", "50K"),
|
||||
}
|
||||
|
||||
for locale in ("es", "tr"):
|
||||
for figure, anchors in expected_anchors.items():
|
||||
assert_anchors(locale, 4, figure, anchors)
|
||||
Reference in New Issue
Block a user