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,73 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"experiment": "7-6",
|
||||
"status": "incomplete",
|
||||
"generated_at_utc": "2026-07-29T22:26:23.177040+00:00",
|
||||
"run_dir": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2",
|
||||
"git_commit": "4a7f37cf278bd15948c409f14533017c4c7fbc29",
|
||||
"command": "python demo.py --providers fishaudio --gemini --fresh --output RUN_DIR",
|
||||
"provider_receipt_count": 0,
|
||||
"status_reasons": [
|
||||
"Fish Audio synthesized all six real corpus clips, but Gemini rejected the configured credential, so zero four-dimensional judgments are valid.",
|
||||
"Only one synthesis provider completed; the manuscript requires a multi-provider comparison."
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/config.py",
|
||||
"bytes": 8485,
|
||||
"sha256": "512913faae41a62e8e2093fa855bbd19d62d3bbbd8b8bb049aac42febe5b90d3"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/pipeline.py",
|
||||
"bytes": 23173,
|
||||
"sha256": "e6ae0088d7649cd90a4bbd21b01dcb24f350d2708b2c747effd0d62c6c2ac29f"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/demo.py",
|
||||
"bytes": 16925,
|
||||
"sha256": "277f032794b10f419affd5800af2c3cf8b624d3fff756f5af98e53e2891bb6da"
|
||||
},
|
||||
{
|
||||
"path": "chapter9/controllable-tts/reference_audio/neutral_normal_formal.mp3",
|
||||
"bytes": 73977,
|
||||
"sha256": "2cf4c64bb8222399ab54c63cc41049c572ea5f1b819ffdcbc496014daae004c0"
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/fishaudio-s1-clone__emotion.mp3",
|
||||
"bytes": 95293,
|
||||
"sha256": "f124226905ed828674d2517ff67fe9f3b976f8d48e739ad2214088a459833a8f"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/fishaudio-s1-clone__long.mp3",
|
||||
"bytes": 203127,
|
||||
"sha256": "1a0560b87d85699ee8e5635f4b50cac315d0621163ca27cf3b6740e1ba70129b"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/fishaudio-s1-clone__num.mp3",
|
||||
"bytes": 103652,
|
||||
"sha256": "536bd78c6f39cbc24833ac7096b6c9c5cf7018273619b58f307fc9a012ea5f1a"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/fishaudio-s1-clone__polyphone.mp3",
|
||||
"bytes": 97801,
|
||||
"sha256": "10f0ef83d8440209a016f9ca0aa0de8c528c809cf94dbab0f61403edf24ab391"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/fishaudio-s1-clone__question.mp3",
|
||||
"bytes": 78993,
|
||||
"sha256": "ee56d58c14fce8cdedf6027a738077aa3dcf10d713f09bf99d56871d4879ef82"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/fishaudio-s1-clone__sad.mp3",
|
||||
"bytes": 88606,
|
||||
"sha256": "5a01f6d1b7f02e8c4c92d317a872f45672e20719ce99f2bbaa190f0a25a8051f"
|
||||
},
|
||||
{
|
||||
"path": "chapter7/tts-quality-eval/runs/exp7-6-fish-gemini-20260730-v2/results.json",
|
||||
"bytes": 7778,
|
||||
"sha256": "a3b1a78591db3e8bdccd35af7e7f2184cf164e6add6d0d42d77d9437924f5b17"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"schema_version": "2.0",
|
||||
"experiment": "7-6",
|
||||
"generated_at_utc": "2026-07-29T22:25:34.024892+00:00",
|
||||
"command_scope": {
|
||||
"providers": [
|
||||
"fishaudio"
|
||||
],
|
||||
"configurations": [
|
||||
{
|
||||
"name": "fishaudio-s1-clone",
|
||||
"provider": "fishaudio",
|
||||
"model": "s1",
|
||||
"voice": "6df3c1e14c9440e9ac978556536bf116",
|
||||
"speed": 1.0
|
||||
}
|
||||
],
|
||||
"corpus_ids": [
|
||||
"num",
|
||||
"polyphone",
|
||||
"long",
|
||||
"emotion",
|
||||
"sad",
|
||||
"question"
|
||||
],
|
||||
"expected_records": 6,
|
||||
"direct_audio_judge": true,
|
||||
"optional_asr_enabled": false
|
||||
},
|
||||
"reference_audio": {
|
||||
"path": "../../../../chapter9/controllable-tts/reference_audio/neutral_normal_formal.mp3",
|
||||
"sha256": "2cf4c64bb8222399ab54c63cc41049c572ea5f1b819ffdcbc496014daae004c0"
|
||||
},
|
||||
"rubric_dimensions": [
|
||||
"准确性",
|
||||
"自然度",
|
||||
"情感表达",
|
||||
"音色一致性"
|
||||
],
|
||||
"completion": {
|
||||
"successful_records": 0,
|
||||
"direct_audio_four_dimension_records": 0,
|
||||
"expected_records": 6,
|
||||
"all_cells_complete": false,
|
||||
"multi_provider": false,
|
||||
"manuscript_core_complete": false
|
||||
},
|
||||
"records": [
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "num",
|
||||
"challenge": "数字/百分比/日期",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "RuntimeError: Gemini HTTP 400: {\n \"error\": {\n \"code\": 400,\n \"message\": \"API key not valid. Please pass a valid API key.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"API_KEY_INVALID\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"generativelanguage.googleapis.com\"\n }\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.LocalizedMessage\",\n \"locale\": \"en-US\",\n \"message\": \"API key not valid. Please pass a valid API key.\"\n }\n ]\n }\n}\n",
|
||||
"audio_path": "fishaudio-s1-clone__num.mp3",
|
||||
"audio_sha256": "536bd78c6f39cbc24833ac7096b6c9c5cf7018273619b58f307fc9a012ea5f1a",
|
||||
"audio_bytes": 103652,
|
||||
"failed_stage": "multimodal_judge"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "polyphone",
|
||||
"challenge": "多音字(行/长/重/还)",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "RuntimeError: Gemini HTTP 400: {\n \"error\": {\n \"code\": 400,\n \"message\": \"API key not valid. Please pass a valid API key.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"API_KEY_INVALID\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"generativelanguage.googleapis.com\"\n }\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.LocalizedMessage\",\n \"locale\": \"en-US\",\n \"message\": \"API key not valid. Please pass a valid API key.\"\n }\n ]\n }\n}\n",
|
||||
"audio_path": "fishaudio-s1-clone__polyphone.mp3",
|
||||
"audio_sha256": "10f0ef83d8440209a016f9ca0aa0de8c528c809cf94dbab0f61403edf24ab391",
|
||||
"audio_bytes": 97801,
|
||||
"failed_stage": "multimodal_judge"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "long",
|
||||
"challenge": "长句/新闻文体",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "RuntimeError: Gemini HTTP 400: {\n \"error\": {\n \"code\": 400,\n \"message\": \"API key not valid. Please pass a valid API key.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"API_KEY_INVALID\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"generativelanguage.googleapis.com\"\n }\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.LocalizedMessage\",\n \"locale\": \"en-US\",\n \"message\": \"API key not valid. Please pass a valid API key.\"\n }\n ]\n }\n}\n",
|
||||
"audio_path": "fishaudio-s1-clone__long.mp3",
|
||||
"audio_sha256": "1a0560b87d85699ee8e5635f4b50cac315d0621163ca27cf3b6740e1ba70129b",
|
||||
"audio_bytes": 203127,
|
||||
"failed_stage": "multimodal_judge"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "emotion",
|
||||
"challenge": "专有名词 + 感叹情感",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "RuntimeError: Gemini HTTP 400: {\n \"error\": {\n \"code\": 400,\n \"message\": \"API key not valid. Please pass a valid API key.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"API_KEY_INVALID\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"generativelanguage.googleapis.com\"\n }\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.LocalizedMessage\",\n \"locale\": \"en-US\",\n \"message\": \"API key not valid. Please pass a valid API key.\"\n }\n ]\n }\n}\n",
|
||||
"audio_path": "fishaudio-s1-clone__emotion.mp3",
|
||||
"audio_sha256": "f124226905ed828674d2517ff67fe9f3b976f8d48e739ad2214088a459833a8f",
|
||||
"audio_bytes": 95293,
|
||||
"failed_stage": "multimodal_judge"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "sad",
|
||||
"challenge": "悲伤情感/低语速低语调",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "RuntimeError: Gemini HTTP 400: {\n \"error\": {\n \"code\": 400,\n \"message\": \"API key not valid. Please pass a valid API key.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"API_KEY_INVALID\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"generativelanguage.googleapis.com\"\n }\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.LocalizedMessage\",\n \"locale\": \"en-US\",\n \"message\": \"API key not valid. Please pass a valid API key.\"\n }\n ]\n }\n}\n",
|
||||
"audio_path": "fishaudio-s1-clone__sad.mp3",
|
||||
"audio_sha256": "5a01f6d1b7f02e8c4c92d317a872f45672e20719ce99f2bbaa190f0a25a8051f",
|
||||
"audio_bytes": 88606,
|
||||
"failed_stage": "multimodal_judge"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "question",
|
||||
"challenge": "对话文体/疑问句升调",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "RuntimeError: Gemini HTTP 400: {\n \"error\": {\n \"code\": 400,\n \"message\": \"API key not valid. Please pass a valid API key.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.ErrorInfo\",\n \"reason\": \"API_KEY_INVALID\",\n \"domain\": \"googleapis.com\",\n \"metadata\": {\n \"service\": \"generativelanguage.googleapis.com\"\n }\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.LocalizedMessage\",\n \"locale\": \"en-US\",\n \"message\": \"API key not valid. Please pass a valid API key.\"\n }\n ]\n }\n}\n",
|
||||
"audio_path": "fishaudio-s1-clone__question.mp3",
|
||||
"audio_sha256": "ee56d58c14fce8cdedf6027a738077aa3dcf10d713f09bf99d56871d4879ef82",
|
||||
"audio_bytes": 78993,
|
||||
"failed_stage": "multimodal_judge"
|
||||
}
|
||||
],
|
||||
"summary": [
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"n_ok": 0,
|
||||
"n": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"schema_version": "2.0",
|
||||
"experiment": "7-6",
|
||||
"generated_at_utc": "2026-07-29T19:41:22.781006+00:00",
|
||||
"command_scope": {
|
||||
"providers": [
|
||||
"fishaudio",
|
||||
"openai"
|
||||
],
|
||||
"configurations": [
|
||||
{
|
||||
"name": "openai-alloy",
|
||||
"provider": "openai",
|
||||
"model": "tts-1",
|
||||
"voice": "alloy",
|
||||
"speed": 1.0
|
||||
},
|
||||
{
|
||||
"name": "fishaudio-s1-clone",
|
||||
"provider": "fishaudio",
|
||||
"model": "s1",
|
||||
"voice": "6df3c1e14c9440e9ac978556536bf116",
|
||||
"speed": 1.0
|
||||
}
|
||||
],
|
||||
"corpus_ids": [
|
||||
"num",
|
||||
"polyphone",
|
||||
"long",
|
||||
"emotion",
|
||||
"sad",
|
||||
"question"
|
||||
],
|
||||
"expected_records": 12,
|
||||
"direct_audio_judge": true,
|
||||
"optional_asr_enabled": false
|
||||
},
|
||||
"reference_audio": {
|
||||
"path": "../../../../chapter9/controllable-tts/reference_audio/neutral_normal_formal.mp3",
|
||||
"sha256": "2cf4c64bb8222399ab54c63cc41049c572ea5f1b819ffdcbc496014daae004c0"
|
||||
},
|
||||
"rubric_dimensions": [
|
||||
"准确性",
|
||||
"自然度",
|
||||
"情感表达",
|
||||
"音色一致性"
|
||||
],
|
||||
"completion": {
|
||||
"successful_records": 0,
|
||||
"direct_audio_four_dimension_records": 0,
|
||||
"expected_records": 12,
|
||||
"all_cells_complete": false,
|
||||
"multi_provider": true,
|
||||
"manuscript_core_complete": false
|
||||
},
|
||||
"records": [
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"sample": "num",
|
||||
"challenge": "数字/百分比/日期",
|
||||
"provider": "openai",
|
||||
"ok": false,
|
||||
"error": "RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}"
|
||||
},
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"sample": "polyphone",
|
||||
"challenge": "多音字(行/长/重/还)",
|
||||
"provider": "openai",
|
||||
"ok": false,
|
||||
"error": "RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}"
|
||||
},
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"sample": "long",
|
||||
"challenge": "长句/新闻文体",
|
||||
"provider": "openai",
|
||||
"ok": false,
|
||||
"error": "RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}"
|
||||
},
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"sample": "emotion",
|
||||
"challenge": "专有名词 + 感叹情感",
|
||||
"provider": "openai",
|
||||
"ok": false,
|
||||
"error": "RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}"
|
||||
},
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"sample": "sad",
|
||||
"challenge": "悲伤情感/低语速低语调",
|
||||
"provider": "openai",
|
||||
"ok": false,
|
||||
"error": "RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}"
|
||||
},
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"sample": "question",
|
||||
"challenge": "对话文体/疑问句升调",
|
||||
"provider": "openai",
|
||||
"ok": false,
|
||||
"error": "RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "num",
|
||||
"challenge": "数字/百分比/日期",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "HTTPError: HTTP Error 400: Bad Request"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "polyphone",
|
||||
"challenge": "多音字(行/长/重/还)",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "HTTPError: HTTP Error 400: Bad Request"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "long",
|
||||
"challenge": "长句/新闻文体",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "HTTPError: HTTP Error 400: Bad Request"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "emotion",
|
||||
"challenge": "专有名词 + 感叹情感",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "HTTPError: HTTP Error 400: Bad Request"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "sad",
|
||||
"challenge": "悲伤情感/低语速低语调",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "HTTPError: HTTP Error 400: Bad Request"
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"sample": "question",
|
||||
"challenge": "对话文体/疑问句升调",
|
||||
"provider": "fishaudio",
|
||||
"ok": false,
|
||||
"error": "HTTPError: HTTP Error 400: Bad Request"
|
||||
}
|
||||
],
|
||||
"summary": [
|
||||
{
|
||||
"config": "openai-alloy",
|
||||
"n_ok": 0,
|
||||
"n": 6
|
||||
},
|
||||
{
|
||||
"config": "fishaudio-s1-clone",
|
||||
"n_ok": 0,
|
||||
"n": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user