diff --git a/docs/zh/.translation-manifest.json b/docs/zh/.translation-manifest.json index 023b399..082db75 100644 --- a/docs/zh/.translation-manifest.json +++ b/docs/zh/.translation-manifest.json @@ -1,75 +1,75 @@ { - "generatedAt": "2026-08-27T07:09:24.893Z", + "generatedAt": "2026-08-29T17:44:55.522Z", "pages": { "https://developers.openai.com/api/docs/actions/actions-library.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/actions-library.md", "sourceSha256": "50d08031f037850bc7a99558fa83c24dd8720ad75cc809522684292b1bbd3c3c", "sourceUrl": "https://developers.openai.com/api/docs/actions/actions-library.md", "targetPath": "docs/zh/api/docs/actions/actions-library.md", - "targetSha256": "dc44f5fee11f4eed6bf41f0780f880eca97cf17e25cd526b884d06c0385d2401", - "translatedAt": "2026-08-26T06:43:58.137Z" + "targetSha256": "49aff7d2c418b6e0c4d54ecc3bdb2710a0c8ae142f74701c7c673502c45a4811", + "translatedAt": "2026-08-29T16:48:15.767Z" }, "https://developers.openai.com/api/docs/actions/authentication.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/authentication.md", "sourceSha256": "074f74f31fedb66f7c54452aeee76d59c713743d2c6afa445bd89e9ba646f20a", "sourceUrl": "https://developers.openai.com/api/docs/actions/authentication.md", "targetPath": "docs/zh/api/docs/actions/authentication.md", - "targetSha256": "69f12550690d255d842bd0803de7bd914a4ee71021a02abd6662fcbcdec1f12e", - "translatedAt": "2026-08-26T15:48:29.090Z" + "targetSha256": "94a919ef84e554837d7310ab2c368104fa52e4cc5c4b441aa8200d7248c5506c", + "translatedAt": "2026-08-29T16:48:43.994Z" }, "https://developers.openai.com/api/docs/actions/data-retrieval.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/data-retrieval.md", "sourceSha256": "25720aec748658522b478d94035f8314d972afb69be76847076a5ebb151b9188", "sourceUrl": "https://developers.openai.com/api/docs/actions/data-retrieval.md", "targetPath": "docs/zh/api/docs/actions/data-retrieval.md", - "targetSha256": "22d5e1469beb457b5027c20c4d9be640d2e2f482fb1ccef7dd47e853ce0b73e3", - "translatedAt": "2026-08-26T15:49:01.402Z" + "targetSha256": "21cffb00a8ce2f4549ace3426e59f2d90253fd9445a5b45422511ff520f2c484", + "translatedAt": "2026-08-29T16:49:27.923Z" }, "https://developers.openai.com/api/docs/actions/getting-started.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "ac5df51ccc3b933ba604915efa33e9d98bd5b74e2895a254c5fb1e52b5847f3c", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/getting-started.md", "sourceSha256": "3b7ee6a8c5b1e20c1e1d4c76d606d64a3640f80ca5d9e3ac63cb8bccdd6f0343", "sourceUrl": "https://developers.openai.com/api/docs/actions/getting-started.md", "targetPath": "docs/zh/api/docs/actions/getting-started.md", - "targetSha256": "87eec8fad2c430a8cea300a2d26ba7d88c4b193ef70ef480e3b15c3bfbdb3d0b", - "translatedAt": "2026-08-26T15:49:48.953Z" + "targetSha256": "c6fe0b5a1b2b2504a1bda096fc0eebeb78e0b843f2685044aa44f388bb7c8524", + "translatedAt": "2026-08-29T16:50:52.818Z" }, "https://developers.openai.com/api/docs/actions/introduction.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/introduction.md", "sourceSha256": "a15cda71e4566b273df87d2ae688b52076c45f3a674e39c2f34060b78143706e", "sourceUrl": "https://developers.openai.com/api/docs/actions/introduction.md", "targetPath": "docs/zh/api/docs/actions/introduction.md", - "targetSha256": "8dbb8de05daf4b08d15327e9ae0a81b545d0ab8f73f633d10b2945373be3edf7", - "translatedAt": "2026-08-26T15:50:10.052Z" + "targetSha256": "a4fc409f7f27f90fe2d3a30f2a1cab8cbb00961f9d07eb0d46e6e5daea20d478", + "translatedAt": "2026-08-29T16:51:29.841Z" }, "https://developers.openai.com/api/docs/actions/production.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/production.md", "sourceSha256": "a165ffe2f29f9571b48661ec6ffdfcbab16990ee6406217e6a1a5530d5433f23", "sourceUrl": "https://developers.openai.com/api/docs/actions/production.md", "targetPath": "docs/zh/api/docs/actions/production.md", - "targetSha256": "fd4ace95eeded8dfffc951c644178529098feb812512822ad609b8c0aed7c5d3", - "translatedAt": "2026-08-26T15:50:40.464Z" + "targetSha256": "6aea8ef5f74c70ae4c40d32dfbbb0a80d474d55410e0f75e64b8ee91f6633a34", + "translatedAt": "2026-08-29T16:52:32.756Z" }, "https://developers.openai.com/api/docs/actions/sending-files.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/actions/sending-files.md", "sourceSha256": "1e3b78b894359cc5a67c7aad186cd6e3be9b148c2ffdf285cdc29c5327f369c6", "sourceUrl": "https://developers.openai.com/api/docs/actions/sending-files.md", "targetPath": "docs/zh/api/docs/actions/sending-files.md", - "targetSha256": "faa41c7bde0c6b99ca844cdfe3878e0aa7e88ffef04c9eac3d2e8269b2dedc2b", - "translatedAt": "2026-08-26T15:50:58.971Z" + "targetSha256": "11dc1db2d40937da5b5dbcd556f1120059a13620b8fc44b2b1a8373f700deb18", + "translatedAt": "2026-08-29T16:52:59.644Z" }, "https://developers.openai.com/api/docs/assistants/deep-dive.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -82,24 +82,24 @@ "translatedAt": "2026-08-26T17:29:32.106Z" }, "https://developers.openai.com/api/docs/assistants/migration.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/assistants/migration.md", "sourceSha256": "0d866515c0d406e6e5a402baad1fe0ad50c10369a5929a47b74e60e487b77775", "sourceUrl": "https://developers.openai.com/api/docs/assistants/migration.md", "targetPath": "docs/zh/api/docs/assistants/migration.md", - "targetSha256": "ba21e7b87f8d1e160a1855f9686dae2d4b9fc8a356dbd10166af0fdff6bb66e2", - "translatedAt": "2026-08-26T15:51:30.695Z" + "targetSha256": "1564b8272b45382dad0fbd983120e3160161f8e811913b17107e83e233c394e3", + "translatedAt": "2026-08-29T16:53:47.607Z" }, "https://developers.openai.com/api/docs/assistants/tools.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/assistants/tools.md", "sourceSha256": "6af0d20d95e77ae5fe5ebba561dd6825aef87987e94ada92e0a281b68152889e", "sourceUrl": "https://developers.openai.com/api/docs/assistants/tools.md", "targetPath": "docs/zh/api/docs/assistants/tools.md", - "targetSha256": "fbfd46dd4968a08928294cf889a60bdb019fd6ef46f0790400b0e6aebe06dce9", - "translatedAt": "2026-08-26T15:51:40.003Z" + "targetSha256": "0796839471e9eba47f76dd0471625fab2ef19e0e6958d32b580ac7810cf15409", + "translatedAt": "2026-08-29T16:54:02.316Z" }, "https://developers.openai.com/api/docs/assistants/tools/code-interpreter.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -132,14 +132,14 @@ "translatedAt": "2026-08-26T17:31:37.006Z" }, "https://developers.openai.com/api/docs/bots.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/bots.md", "sourceSha256": "cc0548db71d52dab749aed3fd33944aa0a8bc48f6c1285c9f91f014b7b0f6953", "sourceUrl": "https://developers.openai.com/api/docs/bots.md", "targetPath": "docs/zh/api/docs/bots.md", - "targetSha256": "262776c06459107d67e01913b5d26ee3f6b5b27662af3afbe027b20c759e07d9", - "translatedAt": "2026-08-26T15:53:32.211Z" + "targetSha256": "f7e53281131cd9b56b72b2a9bd15092c63ea9054a21469427633fd0951f6ddae", + "translatedAt": "2026-08-29T16:54:10.158Z" }, "https://developers.openai.com/api/docs/changelog.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -152,14 +152,14 @@ "translatedAt": "2026-08-26T17:38:27.434Z" }, "https://developers.openai.com/api/docs/concepts.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/concepts.md", "sourceSha256": "af3efd7a586964f64b9e67f7066c69415554c2a9a893c88f84eb2e303a4d80de", "sourceUrl": "https://developers.openai.com/api/docs/concepts.md", "targetPath": "docs/zh/api/docs/concepts.md", - "targetSha256": "2a53fced58ab3f8ed5db8c4290b65d22217207590bb6c84a15e4218305d1d217", - "translatedAt": "2026-08-26T15:54:35.635Z" + "targetSha256": "f6fa27c64c3b8df942f9f6d704933146e748760f8f900739015bc4c16c072cea", + "translatedAt": "2026-08-29T16:54:29.067Z" }, "https://developers.openai.com/api/docs/deprecations.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -172,134 +172,134 @@ "translatedAt": "2026-08-26T17:41:32.276Z" }, "https://developers.openai.com/api/docs/gpts/release-notes.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/gpts/release-notes.md", "sourceSha256": "1d3814877bd73c9bc8b660f2b6b0e725458a9cd781f916d9224f6c58ccdffea2", "sourceUrl": "https://developers.openai.com/api/docs/gpts/release-notes.md", "targetPath": "docs/zh/api/docs/gpts/release-notes.md", - "targetSha256": "01d560ed09d93ef945f9c5a1bfab5ccb59cd5642073dc5c858526d48465a2216", - "translatedAt": "2026-08-26T15:54:52.452Z" + "targetSha256": "41d192781fe319c2f2e10cc550f00db1bf3b55f1b5d68096d04d35511ae522eb", + "translatedAt": "2026-08-29T16:54:58.385Z" }, "https://developers.openai.com/api/docs/guides/admin-apis.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/admin-apis.md", "sourceSha256": "8abf6a2065d6ebebcdc1a995c0770e44fa4e608cc99d86307e59858923811dd8", "sourceUrl": "https://developers.openai.com/api/docs/guides/admin-apis.md", "targetPath": "docs/zh/api/docs/guides/admin-apis.md", - "targetSha256": "49fb334097736654bbb8126f92081d90d934b414d7e98e3462f204213c906461", - "translatedAt": "2026-08-26T15:55:13.707Z" + "targetSha256": "15ce9263823ea0a3fd3d1145b582da759ec35e41020930ff7cbdf39a855fe3fc", + "translatedAt": "2026-08-29T16:55:39.913Z" }, "https://developers.openai.com/api/docs/guides/advanced-usage.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/advanced-usage.md", "sourceSha256": "a696685d4d6359c33739f40e240f54f319c8d08f83fbd73778a705aa31d1313b", "sourceUrl": "https://developers.openai.com/api/docs/guides/advanced-usage.md", "targetPath": "docs/zh/api/docs/guides/advanced-usage.md", - "targetSha256": "ca21a120d235485cc08437612e86ac44c64acd6447f1be08d61a9c66415aae5e", - "translatedAt": "2026-08-26T15:38:49.344Z" + "targetSha256": "784aaa551ac8c3500eaaaa7e1e97b6e5d072184ccc4226e244424901940e36c1", + "translatedAt": "2026-08-29T16:37:43.443Z" }, "https://developers.openai.com/api/docs/guides/agent-builder-safety.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agent-builder-safety.md", "sourceSha256": "e3902b08bb7fc6f922698bcc889c101caa3537e8bb641d0b9262347a564bb646", "sourceUrl": "https://developers.openai.com/api/docs/guides/agent-builder-safety.md", "targetPath": "docs/zh/api/docs/guides/agent-builder-safety.md", - "targetSha256": "e56494369592a978e57fc92c58e5f4c066af14beb437fa8b98ac94edcd136113", - "translatedAt": "2026-08-26T15:55:42.858Z" + "targetSha256": "3004042f546668ef7939c7f505856d3acbe73dd7541abdc811956ee455d1c356", + "translatedAt": "2026-08-29T16:56:35.313Z" }, "https://developers.openai.com/api/docs/guides/agent-builder.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agent-builder.md", "sourceSha256": "319ca9389bfcfe4136bdcf6cefe5e1b467e7b398466f2018c337136e6f8c6eac", "sourceUrl": "https://developers.openai.com/api/docs/guides/agent-builder.md", "targetPath": "docs/zh/api/docs/guides/agent-builder.md", - "targetSha256": "e913e17072b0f71b4d3d8e1345baa8f0b29a63593e6b671ba57b39cf311fb9fc", - "translatedAt": "2026-08-26T15:59:45.959Z" + "targetSha256": "8072b27fa7cb2b737198656be3bbe8b48a53f0dc716a81626e89907e4b0b0ab5", + "translatedAt": "2026-08-29T16:57:38.582Z" }, "https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agent-builder/migrate-from-agent-builder.md", "sourceSha256": "6a6b33dfc7d9d44db2abee48aa453762cd810c456258129aafd6bcea1fec9536", "sourceUrl": "https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder.md", "targetPath": "docs/zh/api/docs/guides/agent-builder/migrate-from-agent-builder.md", - "targetSha256": "f28eeba37b3666f1f69b5b2e08764577195db7d935fc41de373502ba221d5114", - "translatedAt": "2026-08-26T16:03:39.880Z" + "targetSha256": "3b45b114fc5a43a41e2c042f2f92bd34109b1d1661e4e24716857dadea617c05", + "translatedAt": "2026-08-29T16:58:24.013Z" }, "https://developers.openai.com/api/docs/guides/agent-evals.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agent-evals.md", "sourceSha256": "55804edbdfb1df0df3eca148783b7c832f2e4ff00e0718ca385b10489792e887", "sourceUrl": "https://developers.openai.com/api/docs/guides/agent-evals.md", "targetPath": "docs/zh/api/docs/guides/agent-evals.md", - "targetSha256": "9201e469aff5993717104f30ad629ef4be0250e5b91ebbfb4f4aab588bc636b5", - "translatedAt": "2026-08-26T16:04:03.572Z" + "targetSha256": "14c45edd58618c8ab174022b593771aef8653acafb3034ac53ce130177f66f87", + "translatedAt": "2026-08-29T16:59:00.796Z" }, "https://developers.openai.com/api/docs/guides/agents.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents.md", "sourceSha256": "2df6f9d26074aa56033abf009f675b97fcb77ed1275074f406eb992c01e5f080", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents.md", "targetPath": "docs/zh/api/docs/guides/agents.md", - "targetSha256": "c7b445b77f0c54e920ef823379fe45081c8b42f9b80040ca0f9f73bb0592c639", - "translatedAt": "2026-08-26T15:31:35.983Z" + "targetSha256": "692f3933b79b7d00a5206830ab4650331f8a7fcefaa4d808ebb8e0b86cc4a1d6", + "translatedAt": "2026-08-29T16:25:22.638Z" }, "https://developers.openai.com/api/docs/guides/agents/define-agents.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/define-agents.md", "sourceSha256": "ccfea85d72d4cb52925ffee026abe06c8cacd7710c75ffe79f98ee171783fbb1", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/define-agents.md", "targetPath": "docs/zh/api/docs/guides/agents/define-agents.md", - "targetSha256": "5ee18f99f95842308910f6d03c6908a881a35073ddaec65f933c1c365f6a9923", - "translatedAt": "2026-08-26T15:32:04.385Z" + "targetSha256": "88efab8f22d0735b24fc54f5b8023f12182feedd7304f40dddb570e44b636a2f", + "translatedAt": "2026-08-29T16:26:12.855Z" }, "https://developers.openai.com/api/docs/guides/agents/guardrails-approvals.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/guardrails-approvals.md", "sourceSha256": "9900845b3e016e66c90e44f5e92e1718841b7160eba15243b7f560f7dc8ba4d9", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/guardrails-approvals.md", "targetPath": "docs/zh/api/docs/guides/agents/guardrails-approvals.md", - "targetSha256": "5fe34e86bc44ad498b9f287f17b169362e93aec084ce59c85417ea7bf7fab90c", - "translatedAt": "2026-08-26T15:33:45.514Z" + "targetSha256": "e249c7f256ff25bd1479adcf20ccd69ae80f5248136cfa1f7b9202197ecacd4c", + "translatedAt": "2026-08-29T16:29:05.088Z" }, "https://developers.openai.com/api/docs/guides/agents/integrations-observability.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/integrations-observability.md", "sourceSha256": "b88a66dddb9dca79a7ee40b33a288b88425edd37454ab40d4933525ec1dca91a", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/integrations-observability.md", "targetPath": "docs/zh/api/docs/guides/agents/integrations-observability.md", - "targetSha256": "05ef3f5ebfafd713cbbd478c1f43c527fd3620f60e1a99a8cad63a1e1ad8cfe4", - "translatedAt": "2026-08-26T15:33:12.537Z" + "targetSha256": "5e3a927acaeed328ee651f6c64cbf275451386f02cd6833be39d6839cd9119ea", + "translatedAt": "2026-08-29T16:28:12.708Z" }, "https://developers.openai.com/api/docs/guides/agents/models.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/models.md", "sourceSha256": "3ab7319c65b56a4a5bba97bdb43d4c9810dd6c55e4e9085ad8236aa8cf0ba1a6", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/models.md", "targetPath": "docs/zh/api/docs/guides/agents/models.md", - "targetSha256": "97c2821a5f999f804f51305561ba2123902b423c98a68dbf796995706bf1e972", - "translatedAt": "2026-08-26T16:04:45.336Z" + "targetSha256": "10ba7f0180834925f15bed8b06ee0575a35b277e77f0ba37dee369ad5f23e283", + "translatedAt": "2026-08-29T16:59:46.149Z" }, "https://developers.openai.com/api/docs/guides/agents/orchestration.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/orchestration.md", "sourceSha256": "0584ceaaef093d1adac15db6686f3baeac1ac04f39c7602ca49eb27fe9698cde", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/orchestration.md", "targetPath": "docs/zh/api/docs/guides/agents/orchestration.md", - "targetSha256": "e2449696481b709360907c1297fc1cc021bd0d413a03bb4795f3cf2a165163cd", - "translatedAt": "2026-08-26T15:32:49.750Z" + "targetSha256": "3698aa24d643c4e674421c58544f267bf0b85a9e70a439f701b4cc302d7cbad7", + "translatedAt": "2026-08-29T16:27:33.624Z" }, "https://developers.openai.com/api/docs/guides/agents/quickstart.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -312,24 +312,24 @@ "translatedAt": "2026-08-27T07:00:26.320Z" }, "https://developers.openai.com/api/docs/guides/agents/results.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/results.md", "sourceSha256": "ae4f772b8f8736ee49e2d2c5c649d6250ca6740986605dbc760f69620ac4f748", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/results.md", "targetPath": "docs/zh/api/docs/guides/agents/results.md", - "targetSha256": "6390883264d9f812372f96eee10ef5ca18aa70c4b9e50b9824bdf6ea4023a459", - "translatedAt": "2026-08-26T16:05:18.043Z" + "targetSha256": "e732675d0f55877f156fbb070b234da30770aa9386fc561a4acba8260bb2358a", + "translatedAt": "2026-08-29T17:00:59.995Z" }, "https://developers.openai.com/api/docs/guides/agents/running-agents.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/agents/running-agents.md", "sourceSha256": "e87082ac3e260b19cafcc20c58a8fc53675e6015ce79f3efd9e26e61e61d6849", "sourceUrl": "https://developers.openai.com/api/docs/guides/agents/running-agents.md", "targetPath": "docs/zh/api/docs/guides/agents/running-agents.md", - "targetSha256": "51c05d00d1fd34f2e1568862e88d338ba6ed57f2afb1add36dffa2ff8cbbb619", - "translatedAt": "2026-08-26T15:32:29.236Z" + "targetSha256": "39b972f811d27e30eb0538f24e23547c744502b07e89b046507b1a651d387773", + "translatedAt": "2026-08-29T16:26:57.683Z" }, "https://developers.openai.com/api/docs/guides/agents/sandboxes.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -342,24 +342,24 @@ "translatedAt": "2026-08-26T17:46:14.455Z" }, "https://developers.openai.com/api/docs/guides/amazon-bedrock.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/amazon-bedrock.md", "sourceSha256": "56ab2d7cbbfc6efb17fb7ea987af1b7c0c3c56178f8bb6b9f03bb5157d4305d5", "sourceUrl": "https://developers.openai.com/api/docs/guides/amazon-bedrock.md", "targetPath": "docs/zh/api/docs/guides/amazon-bedrock.md", - "targetSha256": "b0892d9b7356876d91974447b73459a4ac38a7217e663109d5ff431912dd3e49", - "translatedAt": "2026-08-26T16:09:58.284Z" + "targetSha256": "b03bc0354d5e26c4fb9d1b3f3af1ef0c95f800ec8638409012739ab952cd6f01", + "translatedAt": "2026-08-29T17:02:31.052Z" }, "https://developers.openai.com/api/docs/guides/audio.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/audio.md", "sourceSha256": "0d33a8388aa5bf489df2530f7f1b1753dcc65ff9d687319a320f0750069aea5f", "sourceUrl": "https://developers.openai.com/api/docs/guides/audio.md", "targetPath": "docs/zh/api/docs/guides/audio.md", - "targetSha256": "8c9a24997e97f92cc5886bc984d145c752c9e10ea57cfe60e5a78305e51cb038", - "translatedAt": "2026-08-27T01:20:55.632Z" + "targetSha256": "a18ce98cb8975165984a1820fb990fe92a7ed2f47463800eecd4c149253f7628", + "translatedAt": "2026-08-29T16:19:32.128Z" }, "https://developers.openai.com/api/docs/guides/background.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -382,44 +382,44 @@ "translatedAt": "2026-08-26T17:47:03.390Z" }, "https://developers.openai.com/api/docs/guides/chatkit-actions.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/chatkit-actions.md", "sourceSha256": "fae89ba984128222ca537cc80af73dbfc5ff49ea00e042458efe16eae6287764", "sourceUrl": "https://developers.openai.com/api/docs/guides/chatkit-actions.md", "targetPath": "docs/zh/api/docs/guides/chatkit-actions.md", - "targetSha256": "a43cc2abc8c79519abcb4ea95b5306033461c7deec67fca28e99b93dd431fc11", - "translatedAt": "2026-08-26T16:11:20.268Z" + "targetSha256": "e0ff1df6d96f8b921bec20a908748b93bb5408b17682d12f9433ce9d294bacc3", + "translatedAt": "2026-08-29T17:03:22.130Z" }, "https://developers.openai.com/api/docs/guides/chatkit-themes.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/chatkit-themes.md", "sourceSha256": "65d6dffa378cb5540f0af43985f72e3466ceb9e82aca1c38da18b150a9188a12", "sourceUrl": "https://developers.openai.com/api/docs/guides/chatkit-themes.md", "targetPath": "docs/zh/api/docs/guides/chatkit-themes.md", - "targetSha256": "6bcc814a80fa7cf216555a7ee9644dd88a7d2ce7c1f31e9fea6ee41246a11687", - "translatedAt": "2026-08-26T16:11:54.526Z" + "targetSha256": "2e07a127f0ef8189e9b1b5fc2f4ff9a112768cd451018a97a2f969a2ea3ab850", + "translatedAt": "2026-08-29T17:04:21.618Z" }, "https://developers.openai.com/api/docs/guides/chatkit-widgets.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/chatkit-widgets.md", "sourceSha256": "cd2e4edb389d424a5e71a249b60c22a79ccd7db83e0757a2323e80056017c75e", "sourceUrl": "https://developers.openai.com/api/docs/guides/chatkit-widgets.md", "targetPath": "docs/zh/api/docs/guides/chatkit-widgets.md", - "targetSha256": "78a8f37fc09c4febcbf5bb7ca5f8d5932551d54513953ef26b39fcc9aab6da23", - "translatedAt": "2026-08-26T16:12:57.463Z" + "targetSha256": "e19cd222ce3260d98615f758f9506cd05981b34e52f2e47d3fda5ed5baa2f110", + "translatedAt": "2026-08-29T17:05:28.655Z" }, "https://developers.openai.com/api/docs/guides/chatkit.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/chatkit.md", "sourceSha256": "e01321022a106ea5b1381c8bec6cd0da48715c97903cef4761a8a64d40be965b", "sourceUrl": "https://developers.openai.com/api/docs/guides/chatkit.md", "targetPath": "docs/zh/api/docs/guides/chatkit.md", - "targetSha256": "da001a79fd476fb9fdf446bf8acff10f72c8cacce59519d9f63b4c66d719cb18", - "translatedAt": "2026-08-26T16:15:08.082Z" + "targetSha256": "a7d7e23790003e6d9d6e8c5fa311dd4c546f08e677be81b8871b406e9c8fe456", + "translatedAt": "2026-08-29T17:06:35.440Z" }, "https://developers.openai.com/api/docs/guides/citation-formatting.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -432,44 +432,44 @@ "translatedAt": "2026-08-26T17:48:00.590Z" }, "https://developers.openai.com/api/docs/guides/code-generation.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/code-generation.md", "sourceSha256": "27805a76ea9f0ee0a3a1cc8d3586e5b045841b5db2ba6083dd043cc4ae502a3f", "sourceUrl": "https://developers.openai.com/api/docs/guides/code-generation.md", "targetPath": "docs/zh/api/docs/guides/code-generation.md", - "targetSha256": "fa69b36de47a238d93422d9116d8bb06c5d2166484ef2884e897e72a3e42fe75", - "translatedAt": "2026-08-26T15:30:01.562Z" + "targetSha256": "16f48c15df4e029256d917618f6c78f1146c839edc602ccfab835c9991cfa007", + "translatedAt": "2026-08-29T16:24:16.358Z" }, "https://developers.openai.com/api/docs/guides/compaction.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/compaction.md", "sourceSha256": "1b36d27be4df9b975bbce0d172fe2ffc2994a6fd874cf47f879088e3f6e98a2e", "sourceUrl": "https://developers.openai.com/api/docs/guides/compaction.md", "targetPath": "docs/zh/api/docs/guides/compaction.md", - "targetSha256": "a9e11d7cca7deb9653362df78962ce166e167932199cac60405378944ea7ac9a", - "translatedAt": "2026-08-26T16:16:17.906Z" + "targetSha256": "78aaf5cce23b6381b26b2265f1f932f6a31ddc8d9fec916430748e7356bcbe86", + "translatedAt": "2026-08-29T17:07:09.123Z" }, "https://developers.openai.com/api/docs/guides/completions.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/completions.md", "sourceSha256": "a00a2986e43c5323dc3edcbecb90cf987295561bcc86976d29e0db7b43ffcfde", "sourceUrl": "https://developers.openai.com/api/docs/guides/completions.md", "targetPath": "docs/zh/api/docs/guides/completions.md", - "targetSha256": "7e0b2b2c587a003425a6711547b2c18b6edadd714b28d89d4dd91e2669826fa9", - "translatedAt": "2026-08-26T16:18:33.791Z" + "targetSha256": "1c9b86b14f1eb50ea16e1bc8d72ea4fbde0f0db09b5228d22315b91109e2c5d0", + "translatedAt": "2026-08-29T17:07:43.203Z" }, "https://developers.openai.com/api/docs/guides/content-provenance.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/content-provenance.md", "sourceSha256": "368645d44bb8c2a7c28d5b1c40efe236db635bdead823787c900ed18bde2a204", "sourceUrl": "https://developers.openai.com/api/docs/guides/content-provenance.md", "targetPath": "docs/zh/api/docs/guides/content-provenance.md", - "targetSha256": "01263787edfc6a81619f791488b7482c8364c29eb72419d5fab5f473f9a3e3ed", - "translatedAt": "2026-08-26T15:44:05.019Z" + "targetSha256": "9feb333864b8fbb88c0d62ad304bb9aa99fa7af3e67770e9e6a12de31cd09b01", + "translatedAt": "2026-08-29T16:42:12.911Z" }, "https://developers.openai.com/api/docs/guides/conversation-state.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -482,34 +482,34 @@ "translatedAt": "2026-08-26T17:48:46.266Z" }, "https://developers.openai.com/api/docs/guides/cost-optimization.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/cost-optimization.md", "sourceSha256": "c5d4e8f28445b622ac479a1aecfc8714debb4e0646dc2df75fad3bded6573024", "sourceUrl": "https://developers.openai.com/api/docs/guides/cost-optimization.md", "targetPath": "docs/zh/api/docs/guides/cost-optimization.md", - "targetSha256": "9158f0861aeb4ce015a0c0c7f91a89b368225781d09bc25f6e2d8db403f11124", - "translatedAt": "2026-08-26T16:19:17.045Z" + "targetSha256": "e3b639db07e81a70eccef4f91636d391616bec9270995b35558234b8a2e68927", + "translatedAt": "2026-08-29T17:08:03.767Z" }, "https://developers.openai.com/api/docs/guides/csam-guidance.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/csam-guidance.md", "sourceSha256": "62a50cc3581eaeb9c386c248d9635774dad2d7c3a786b3b7daa40d434c7f718e", "sourceUrl": "https://developers.openai.com/api/docs/guides/csam-guidance.md", "targetPath": "docs/zh/api/docs/guides/csam-guidance.md", - "targetSha256": "72c729d15a2b89cda1dcd3bba122a4abb1d7fccee857dcbb7889e4d657114320", - "translatedAt": "2026-08-26T16:20:09.650Z" + "targetSha256": "000a182c3ce0d643b8f60aa50b052df153a6139b9f3e608835b505589c1e3477", + "translatedAt": "2026-08-29T17:09:40.980Z" }, "https://developers.openai.com/api/docs/guides/custom-chatkit.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/custom-chatkit.md", "sourceSha256": "0c3d621ec1fe56012db3511ca1ac01fdb6c04969bc3caf34c9f282f706dd73c8", "sourceUrl": "https://developers.openai.com/api/docs/guides/custom-chatkit.md", "targetPath": "docs/zh/api/docs/guides/custom-chatkit.md", - "targetSha256": "f8d8c725e0a09ecaee852100c108e95cfad9cc5293946980b2d2efd629bf2504", - "translatedAt": "2026-08-26T16:20:53.236Z" + "targetSha256": "9119957fde4202cae72c850e7d6223ead4b79c99cbdadf1c4e6d42b8d88ee929", + "translatedAt": "2026-08-29T17:10:58.817Z" }, "https://developers.openai.com/api/docs/guides/deep-research.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -532,24 +532,24 @@ "translatedAt": "2026-08-26T17:51:41.805Z" }, "https://developers.openai.com/api/docs/guides/developer-mode.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/developer-mode.md", "sourceSha256": "44f262f4b52405e968d21242264e4c5a53bbd28106f31d4a2b80435e0a019a45", "sourceUrl": "https://developers.openai.com/api/docs/guides/developer-mode.md", "targetPath": "docs/zh/api/docs/guides/developer-mode.md", - "targetSha256": "954e73aaff7b3c7ea895d89409625f856faadf9e7f09573bce32fa714c44e5d2", - "translatedAt": "2026-08-26T16:23:48.228Z" + "targetSha256": "1ac3d4cf8e9689327046e6876e8443b846179e3b47048290cd4b544ce9fd9e42", + "translatedAt": "2026-08-29T17:11:22.478Z" }, "https://developers.openai.com/api/docs/guides/direct-preference-optimization.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/direct-preference-optimization.md", "sourceSha256": "c8c590f8f8746ea785c94da7883ed0efddda25afdbe71e882c67e63076c2eea8", "sourceUrl": "https://developers.openai.com/api/docs/guides/direct-preference-optimization.md", "targetPath": "docs/zh/api/docs/guides/direct-preference-optimization.md", - "targetSha256": "f1fe113af648ed8fcb48ed31e594d403a4cc31dfb27c6c9c8041a468011032a9", - "translatedAt": "2026-08-27T01:22:37.574Z" + "targetSha256": "8ed650314d979cfd281179b87060f796ae35568fc66ad9d5232ddb25ce5e087b", + "translatedAt": "2026-08-29T17:12:25.462Z" }, "https://developers.openai.com/api/docs/guides/embeddings.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -592,34 +592,34 @@ "translatedAt": "2026-08-26T17:56:29.502Z" }, "https://developers.openai.com/api/docs/guides/evaluation-getting-started.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/evaluation-getting-started.md", "sourceSha256": "b40bf8cdea9930d28ec092cbebc28dd145409e315d6c0db05f735ab5dd8a3c10", "sourceUrl": "https://developers.openai.com/api/docs/guides/evaluation-getting-started.md", "targetPath": "docs/zh/api/docs/guides/evaluation-getting-started.md", - "targetSha256": "c304d52118ee19f297456d96538c280845c0f5da7629aca9e8ae40536f9bdb1d", - "translatedAt": "2026-08-26T15:34:32.972Z" + "targetSha256": "5a13858922357f066d77f35c2ee381543886db16de8e2bb3e86853e8b7acccc0", + "translatedAt": "2026-08-29T16:30:27.692Z" }, "https://developers.openai.com/api/docs/guides/external-models.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/external-models.md", "sourceSha256": "edb057c8179248a3da054c6dc51bc83abfb9e6a04947e55d4e4716493cc6c6f3", "sourceUrl": "https://developers.openai.com/api/docs/guides/external-models.md", "targetPath": "docs/zh/api/docs/guides/external-models.md", - "targetSha256": "f13e3eda81ea986cd76ba184cf7aca45c8b39c5cef2f373edfee19cc896b2030", - "translatedAt": "2026-08-26T16:25:12.731Z" + "targetSha256": "cc0c25d2147cec5200fc3bfa5ed7e6490c9cc60f7823cd7217ac0ef9c1dd2987", + "translatedAt": "2026-08-29T17:13:18.698Z" }, "https://developers.openai.com/api/docs/guides/fast-mode.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/fast-mode.md", "sourceSha256": "de79774b0a9806df2754ace2da0e2aeabfc9254a8dab2b37d270c18ca1125e66", "sourceUrl": "https://developers.openai.com/api/docs/guides/fast-mode.md", "targetPath": "docs/zh/api/docs/guides/fast-mode.md", - "targetSha256": "fb1aa4eb61b937d1c13e8dd2a8fff94de49edc91da5f4f8a3d599339f8919f0f", - "translatedAt": "2026-08-26T16:25:45.184Z" + "targetSha256": "47279f159a72172d4aeaaae77f4031fe54f4e3f7142d828851935b2b4a2cebff", + "translatedAt": "2026-08-29T17:14:20.646Z" }, "https://developers.openai.com/api/docs/guides/file-inputs.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -632,34 +632,34 @@ "translatedAt": "2026-08-26T17:57:07.384Z" }, "https://developers.openai.com/api/docs/guides/fine-tuning-best-practices.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/fine-tuning-best-practices.md", "sourceSha256": "ed3d9727d12ce7a65150d44ec3cea243e71d20d96542d30152073d85ff22a7b6", "sourceUrl": "https://developers.openai.com/api/docs/guides/fine-tuning-best-practices.md", "targetPath": "docs/zh/api/docs/guides/fine-tuning-best-practices.md", - "targetSha256": "64ec6d7e117b0f2fafaaa9885099403927d6ddb4692611a6f54135adb9f08e64", - "translatedAt": "2026-08-26T15:35:08.140Z" + "targetSha256": "8e5768fe16912c648a734a8d85d2d7d078a084dc3c8b36042947610f1d8dcc59", + "translatedAt": "2026-08-29T16:31:36.979Z" }, "https://developers.openai.com/api/docs/guides/flex-processing.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/flex-processing.md", "sourceSha256": "b5a4ac92cdd1cfcd31d923c2516a876f4bdf5ef02517932c7fac6608b4ca9cc2", "sourceUrl": "https://developers.openai.com/api/docs/guides/flex-processing.md", "targetPath": "docs/zh/api/docs/guides/flex-processing.md", - "targetSha256": "6e73fff74c95420cc1c898fcad1e65c74dd9b672b162ee8aacf42bb5142ccd3e", - "translatedAt": "2026-08-26T16:25:59.314Z" + "targetSha256": "92a65dc977c045dd6415da6fc7e8f12b5bb248fb56ce6bdb0d8ecf5d488c9032", + "translatedAt": "2026-08-29T17:14:50.729Z" }, "https://developers.openai.com/api/docs/guides/frontend-prompt.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/frontend-prompt.md", "sourceSha256": "ac54f84fef7d6a5b7c23895e27cd8341b43ad5d090b66ed488dbe11ce8e54de6", "sourceUrl": "https://developers.openai.com/api/docs/guides/frontend-prompt.md", "targetPath": "docs/zh/api/docs/guides/frontend-prompt.md", - "targetSha256": "6b8d0fcdc04362a467ea6f57cff1f364da3bd3c7925fab8c4f7e0a4cdc01f4f8", - "translatedAt": "2026-08-26T16:26:02.056Z" + "targetSha256": "a894db4b600bbc6bc414f5040e1a3feafa90d87d586a5026ba558a0e9ca88197", + "translatedAt": "2026-08-29T17:14:55.041Z" }, "https://developers.openai.com/api/docs/guides/function-calling.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -702,24 +702,24 @@ "translatedAt": "2026-08-26T18:11:44.489Z" }, "https://developers.openai.com/api/docs/guides/ip-addresses.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/ip-addresses.md", "sourceSha256": "30e7209e8e6950e4f6743d2e7498ce8d8ff7cb92b444ddf0bddbcdb61994eb75", "sourceUrl": "https://developers.openai.com/api/docs/guides/ip-addresses.md", "targetPath": "docs/zh/api/docs/guides/ip-addresses.md", - "targetSha256": "dee577518e500d69b9baa0f9cbd724f43c949abf9e1aa29f8a43773d75bed278", - "translatedAt": "2026-08-26T16:26:09.009Z" + "targetSha256": "5602c7ab557bd53d6cb894389189a434b30d1d1f37532e0c46407fa2ab155b87", + "translatedAt": "2026-08-29T17:15:07.405Z" }, "https://developers.openai.com/api/docs/guides/ip-allowlist.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/ip-allowlist.md", "sourceSha256": "c7b103aeb5f61b9cda8667e19907e8eef53e33dc7a1a487a34986dec84302def", "sourceUrl": "https://developers.openai.com/api/docs/guides/ip-allowlist.md", "targetPath": "docs/zh/api/docs/guides/ip-allowlist.md", - "targetSha256": "23ef90bcf0bf66d5a4795ea7399ff579390adf22701f4107a7fe172999aed015", - "translatedAt": "2026-08-26T16:26:28.284Z" + "targetSha256": "7d57977b771d7ba1ab7546ae718a90427f83e94bb0334ccafa2ae327eee5ee0c", + "translatedAt": "2026-08-29T17:15:39.946Z" }, "https://developers.openai.com/api/docs/guides/latency-optimization.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -792,14 +792,14 @@ "translatedAt": "2026-08-26T18:32:11.174Z" }, "https://developers.openai.com/api/docs/guides/latest-model/gpt-5.6.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/latest-model/gpt-5.6.md", "sourceSha256": "7591e641abc3cb124b2173843a03d40ea05ee421c8a036f04dda44c79188953e", "sourceUrl": "https://developers.openai.com/api/docs/guides/latest-model/gpt-5.6.md", "targetPath": "docs/zh/api/docs/guides/latest-model/gpt-5.6.md", - "targetSha256": "5dbf8cf654c9234b56ebb2732c8a29a0ce6a40a60a48942d45525f095c7685b0", - "translatedAt": "2026-08-26T15:47:22.358Z" + "targetSha256": "9b3d7bc1e282ec1c0fdbb9461c16e242a9a7c35e079c30e39643950fdbba8265", + "translatedAt": "2026-08-29T16:45:48.685Z" }, "https://developers.openai.com/api/docs/guides/latest-model/gpt-5.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -822,24 +822,24 @@ "translatedAt": "2026-08-26T18:34:53.276Z" }, "https://developers.openai.com/api/docs/guides/model-optimization.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/model-optimization.md", "sourceSha256": "c610f3db42bd20b4cf114977692b05ac410927ac38f1bfdadb143ab357e7209a", "sourceUrl": "https://developers.openai.com/api/docs/guides/model-optimization.md", "targetPath": "docs/zh/api/docs/guides/model-optimization.md", - "targetSha256": "d5e3a7d4762f0382b742e9920443c6b5a6e79387e6226190c6d581d08c999c82", - "translatedAt": "2026-08-26T16:27:00.048Z" + "targetSha256": "59bc5411ae80dd403261afbbc7f3ff903b7e64fb0f8cb552d9bd45a2878ad330", + "translatedAt": "2026-08-29T17:16:40.107Z" }, "https://developers.openai.com/api/docs/guides/model-selection.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/model-selection.md", "sourceSha256": "7c5fbf70b28fd8e4bf297153ca56d54d46d5a86e4d1ab947c443b04718efe3ab", "sourceUrl": "https://developers.openai.com/api/docs/guides/model-selection.md", "targetPath": "docs/zh/api/docs/guides/model-selection.md", - "targetSha256": "9bc6e7b72d10bd37fe707c293308135b54ce40bedb12f61439242e0f52499313", - "translatedAt": "2026-08-26T15:23:44.926Z" + "targetSha256": "f5fbb338d0b1b4f03ab8755365d465e3d54192ddfb240282040d1c81e2bc22bb", + "translatedAt": "2026-08-29T16:21:33.705Z" }, "https://developers.openai.com/api/docs/guides/moderation.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -852,14 +852,14 @@ "translatedAt": "2026-08-26T18:35:13.076Z" }, "https://developers.openai.com/api/docs/guides/node-reference.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/node-reference.md", "sourceSha256": "1f3fb0db01ed628979aacb7448e4d15d82bb39eae099b3f78bb6566d2b553d3e", "sourceUrl": "https://developers.openai.com/api/docs/guides/node-reference.md", "targetPath": "docs/zh/api/docs/guides/node-reference.md", - "targetSha256": "5499359949deabbfbf7b5f63018d13fbdac5dcecfc0bd9e3421302d37cbd46f2", - "translatedAt": "2026-08-26T16:27:38.794Z" + "targetSha256": "1d7b0c3dceacf68c6bc5a04f7dbacf95b6c876496dc79a429fb8832434001564", + "translatedAt": "2026-08-29T17:17:51.783Z" }, "https://developers.openai.com/api/docs/guides/optimizing-llm-accuracy.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -872,34 +872,34 @@ "translatedAt": "2026-08-26T18:36:56.524Z" }, "https://developers.openai.com/api/docs/guides/predicted-outputs.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/predicted-outputs.md", "sourceSha256": "674529a55d94fce022f09aa5bb27edd328f4dd0e11c1f26f4ba15b5504a23ced", "sourceUrl": "https://developers.openai.com/api/docs/guides/predicted-outputs.md", "targetPath": "docs/zh/api/docs/guides/predicted-outputs.md", - "targetSha256": "9bfe2724fa3574fe7341a814895ca513fd7e268b1eb1dfa1772603198eb09222", - "translatedAt": "2026-08-26T16:27:55.240Z" + "targetSha256": "a2e90f90a041df6b78deb40f6a03e43465558d59f7c89821842d5a085b52bf12", + "translatedAt": "2026-08-29T17:18:27.015Z" }, "https://developers.openai.com/api/docs/guides/private-link.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/private-link.md", "sourceSha256": "1d72ced868f0e5cad4297b4beacc3d084acce1d8bd8c5e41e8b08e67e9bbd270", "sourceUrl": "https://developers.openai.com/api/docs/guides/private-link.md", "targetPath": "docs/zh/api/docs/guides/private-link.md", - "targetSha256": "a8584783e24648fc9e348e00c3d5b353670531bc31a1518a0cab165d9c695813", - "translatedAt": "2026-08-26T16:29:04.077Z" + "targetSha256": "e4baa60657f9a7505db50a25e5ae778a16d57af2911b430be0c7df9500ea2877", + "translatedAt": "2026-08-29T17:20:12.305Z" }, "https://developers.openai.com/api/docs/guides/production-best-practices.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/production-best-practices.md", "sourceSha256": "c895ef69135f86eb4ba1d10533338827776cf743c6f07499d6c96917c40a48d6", "sourceUrl": "https://developers.openai.com/api/docs/guides/production-best-practices.md", "targetPath": "docs/zh/api/docs/guides/production-best-practices.md", - "targetSha256": "ac4692a69b28880299fa363eff8cfa4688d4f7d86f544466f6b9e144fe21e334", - "translatedAt": "2026-08-26T15:13:17.347Z" + "targetSha256": "d02a29de5a946e701e38c6130ff1075f687f45c68f591193b6188e8ff3c69ca4", + "translatedAt": "2026-08-29T16:15:13.211Z" }, "https://developers.openai.com/api/docs/guides/prompt-caching.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -932,24 +932,24 @@ "translatedAt": "2026-08-26T18:40:30.512Z" }, "https://developers.openai.com/api/docs/guides/prompt-guidance-gpt-5p6.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/prompt-guidance-gpt-5p6.md", "sourceSha256": "46181efec9fd1160ef537b0379282a14c1ba32380f2f8149a805128253c1115a", "sourceUrl": "https://developers.openai.com/api/docs/guides/prompt-guidance-gpt-5p6.md", "targetPath": "docs/zh/api/docs/guides/prompt-guidance-gpt-5p6.md", - "targetSha256": "f63d27b425ce08cdf2f6c6288499727b036e8fd2c5520a877f87a2b195469561", - "translatedAt": "2026-08-26T15:46:11.060Z" + "targetSha256": "893e67942380baeb06439d5755d5c894322f66c0663d3cd65b6228926e6dec73", + "translatedAt": "2026-08-29T16:44:06.376Z" }, "https://developers.openai.com/api/docs/guides/prompt-optimizer.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/prompt-optimizer.md", "sourceSha256": "033d7db96260035ba97ffab0b082706b167b82e29b4014bdf940a14932686407", "sourceUrl": "https://developers.openai.com/api/docs/guides/prompt-optimizer.md", "targetPath": "docs/zh/api/docs/guides/prompt-optimizer.md", - "targetSha256": "0229cbe5ef3533c8bb1300818391cc626ed0d19aab801f6289c4fabab7650f4f", - "translatedAt": "2026-08-26T16:29:20.329Z" + "targetSha256": "fcbc245975f5d4222fe3cc54a56a7220d03d4112afda1d5dd07bdd00e88f390a", + "translatedAt": "2026-08-29T17:20:41.395Z" }, "https://developers.openai.com/api/docs/guides/prompting.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -962,34 +962,34 @@ "translatedAt": "2026-08-27T07:08:07.078Z" }, "https://developers.openai.com/api/docs/guides/prompting/migrate-from-prompt-object.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/prompting/migrate-from-prompt-object.md", "sourceSha256": "8e19672fa070abc30cb0e71d73b6be030b98ac2ea984844f619c22e7614a5464", "sourceUrl": "https://developers.openai.com/api/docs/guides/prompting/migrate-from-prompt-object.md", "targetPath": "docs/zh/api/docs/guides/prompting/migrate-from-prompt-object.md", - "targetSha256": "f524ae7f6a44b03b41373306cef65c4aa9cb092b27ea6d124502e2971214a26e", - "translatedAt": "2026-08-26T16:29:36.726Z" + "targetSha256": "cfb915a901dbabe65fac8a8d14928c82f82693a90b7414f7d7abbf3cb3fd1699", + "translatedAt": "2026-08-29T17:21:18.619Z" }, "https://developers.openai.com/api/docs/guides/rate-limits.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/rate-limits.md", "sourceSha256": "c4897bd3476fa0237eda40643e681ccf5bb6115f0845e5396574240431c414eb", "sourceUrl": "https://developers.openai.com/api/docs/guides/rate-limits.md", "targetPath": "docs/zh/api/docs/guides/rate-limits.md", - "targetSha256": "8a221ba6b673e1ad400f728c2f321ecf57935262aba79728d83fbb93694dcb9e", - "translatedAt": "2026-08-27T01:21:58.996Z" + "targetSha256": "48eb0b1a26a0ff63613909bdb0b021e739a79195777591be493103797940f0f7", + "translatedAt": "2026-08-29T16:35:21.041Z" }, "https://developers.openai.com/api/docs/guides/rbac.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/rbac.md", "sourceSha256": "332251a844889666ec53e3fdc6cfe62edb750da1d6612256dc634e1d8a421027", "sourceUrl": "https://developers.openai.com/api/docs/guides/rbac.md", "targetPath": "docs/zh/api/docs/guides/rbac.md", - "targetSha256": "ec24dcb9708b51ed20689a3a251f82a7d58edd12b160186201b3c7b4a637b348", - "translatedAt": "2026-08-26T16:30:19.961Z" + "targetSha256": "91744f27a4f107bb96074f83f5048517d9fc51f78cf99dd632666ad0162a9936", + "translatedAt": "2026-08-29T17:22:30.861Z" }, "https://developers.openai.com/api/docs/guides/realtime-conversations.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1002,14 +1002,14 @@ "translatedAt": "2026-08-26T18:42:24.785Z" }, "https://developers.openai.com/api/docs/guides/realtime-costs.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-costs.md", "sourceSha256": "afef7b36f05edb7e4a0c4a840c9030bb2aa087155da6da0404dbbcd3a9dc9512", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-costs.md", "targetPath": "docs/zh/api/docs/guides/realtime-costs.md", - "targetSha256": "5dbe26035050d33a81dc30daab8698d88685e8f981c080ca9012b0da5873133c", - "translatedAt": "2026-08-26T16:30:48.703Z" + "targetSha256": "c2ca939bbdb519d2eef6097e986edd9a07cc2e191eb6091154923ea8e957ddb0", + "translatedAt": "2026-08-29T17:23:20.467Z" }, "https://developers.openai.com/api/docs/guides/realtime-mcp.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1032,94 +1032,94 @@ "translatedAt": "2026-08-26T18:51:25.727Z" }, "https://developers.openai.com/api/docs/guides/realtime-server-controls.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-server-controls.md", "sourceSha256": "e1e5dd9132ccd98de03721b6e307d4ffa4eaee1f9f346f8662225bbc471e0ff2", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-server-controls.md", "targetPath": "docs/zh/api/docs/guides/realtime-server-controls.md", - "targetSha256": "ea5db4cca06e08383c9f6c0c90081b7dc9459bdbaf9ad1409cc7e4906fb20d44", - "translatedAt": "2026-08-26T16:30:59.650Z" + "targetSha256": "0866453ecf5ea210d4bb5be8b925c595908676a5c29f44635a57e42891390665", + "translatedAt": "2026-08-29T17:23:40.457Z" }, "https://developers.openai.com/api/docs/guides/realtime-sip.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-sip.md", "sourceSha256": "8feb3719c31f7e25e3777d60ed197acafdc41de64aaae76389c84a1562753379", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-sip.md", "targetPath": "docs/zh/api/docs/guides/realtime-sip.md", - "targetSha256": "4a41089e95d6041d7ea20f1258a561a8521eb005feb174bb01a0e3c3a3f91d22", - "translatedAt": "2026-08-26T16:31:51.890Z" + "targetSha256": "7c29a0c2e2ead18b97f99f47d4c490a332eb46a83f367c0d021ea9fb76a7f87d", + "translatedAt": "2026-08-29T17:25:10.602Z" }, "https://developers.openai.com/api/docs/guides/realtime-transcription.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-transcription.md", "sourceSha256": "2d50acd8f5c44defff856ad76479c72e0c6adde620463a6522ce30bda6c828e2", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-transcription.md", "targetPath": "docs/zh/api/docs/guides/realtime-transcription.md", - "targetSha256": "5543e156e15729f712b358b50bc0114e02b15170c4a5bb412f34a19af23cfa22", - "translatedAt": "2026-08-26T15:18:35.069Z" + "targetSha256": "aabef69a40efe675fdf5d66bb49e665ec6dbe8794d2f53d489a4201e1feffec9", + "translatedAt": "2026-08-29T16:18:52.640Z" }, "https://developers.openai.com/api/docs/guides/realtime-translation.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-translation.md", "sourceSha256": "14cd851f6a334b625dd1fa686fe78baf97970cd526dcbcc72ed81de5921eb665", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-translation.md", "targetPath": "docs/zh/api/docs/guides/realtime-translation.md", - "targetSha256": "631146452adcc5d25f0e1c239dc2a4b77940bf2b2868ac3b950d0ae860999d3a", - "translatedAt": "2026-08-26T16:32:22.985Z" + "targetSha256": "60ee444380d4ec181213aac04d32f082d096aea61a1a851cba822088e2d3c666", + "translatedAt": "2026-08-29T17:26:07.921Z" }, "https://developers.openai.com/api/docs/guides/realtime-vad.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-vad.md", "sourceSha256": "5a91d2d808561d1fde450bb88ffaa1fb498415f95c8e9fbc0e607675134273dd", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-vad.md", "targetPath": "docs/zh/api/docs/guides/realtime-vad.md", - "targetSha256": "b912d187eb2d660d02be4154d241381f017b55b336b6b0d281af0c6b8c7287bc", - "translatedAt": "2026-08-26T16:32:44.028Z" + "targetSha256": "df0d0d8ecb1414d840b0895bfaeec162f4ca1651a42496e6cc78999574ecb7f0", + "translatedAt": "2026-08-29T17:26:44.909Z" }, "https://developers.openai.com/api/docs/guides/realtime-webrtc.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-webrtc.md", "sourceSha256": "9d80896ad81deda251830019a15a9ce85ff9da4c0e2462676ae3aef257271372", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-webrtc.md", "targetPath": "docs/zh/api/docs/guides/realtime-webrtc.md", - "targetSha256": "7b1dad2d083f40404804178522058a5b720c51f351a1090292532b76e2c02ade", - "translatedAt": "2026-08-26T15:14:36.528Z" + "targetSha256": "158803a5f0bde50f80e6e5875ac887d9f7fcf809f33081f0805ca783a80045df", + "translatedAt": "2026-08-29T16:17:51.189Z" }, "https://developers.openai.com/api/docs/guides/realtime-websocket.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime-websocket.md", "sourceSha256": "103b6df2ca0e06b84748971cfb50d28d98826e881e73318343d51fab2d7c5d71", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime-websocket.md", "targetPath": "docs/zh/api/docs/guides/realtime-websocket.md", - "targetSha256": "b6e3bf2b5016fa3e842aabbde8359cafdafcdd3e1b69bb0b9f4032ef5a4698bd", - "translatedAt": "2026-08-26T15:14:05.207Z" + "targetSha256": "28bc1d5b284e234e0f3d11af57f6e45e6edf93a06abb4448c3cb4ff5f59d499f", + "translatedAt": "2026-08-29T16:16:48.250Z" }, "https://developers.openai.com/api/docs/guides/realtime.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/realtime.md", "sourceSha256": "b8d3363a7f351f52883b23a855d85c0d1e5cc52d547b5db4b644a979eae98109", "sourceUrl": "https://developers.openai.com/api/docs/guides/realtime.md", "targetPath": "docs/zh/api/docs/guides/realtime.md", - "targetSha256": "34eca47102a77706320dab90671bc74a67dfc8c374ee2cc5e0238ed1cf995ec8", - "translatedAt": "2026-08-26T15:13:52.114Z" + "targetSha256": "51b2f59911dea717f2af1a248fcfa4ab7db724cb8dbf8056dbb88b3e80384018", + "translatedAt": "2026-08-29T16:16:25.653Z" }, "https://developers.openai.com/api/docs/guides/reasoning-best-practices.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/reasoning-best-practices.md", "sourceSha256": "00d3f8ee705eb2340513512da669b45aa534ea8c8412e65470cf576aa59baa76", "sourceUrl": "https://developers.openai.com/api/docs/guides/reasoning-best-practices.md", "targetPath": "docs/zh/api/docs/guides/reasoning-best-practices.md", - "targetSha256": "a29abf40b91cf55f58225370eadec3bd8d10ec271613dd37f0c583be52e19869", - "translatedAt": "2026-08-26T15:24:43.558Z" + "targetSha256": "f70732c5e9e2e9080a002ca0981605ce7a98b2ff26f7e0621ccf93deeb8148d0", + "translatedAt": "2026-08-29T16:23:41.781Z" }, "https://developers.openai.com/api/docs/guides/reasoning.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1132,14 +1132,14 @@ "translatedAt": "2026-08-26T18:52:36.909Z" }, "https://developers.openai.com/api/docs/guides/red-teaming.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/red-teaming.md", "sourceSha256": "50db74f66b9071ae82779d26f46a38e97aa2b684821409a9783e23ccf85bf3d9", "sourceUrl": "https://developers.openai.com/api/docs/guides/red-teaming.md", "targetPath": "docs/zh/api/docs/guides/red-teaming.md", - "targetSha256": "debb6bb01192eac3270dc8be0aa23379e0428156e523f81881c6f6d433e9228c", - "translatedAt": "2026-08-26T16:32:54.405Z" + "targetSha256": "e15a55452382b46d556fc4d40f6686d508345e40a5e86ccb9b29f23a2916385c", + "translatedAt": "2026-08-29T17:27:05.440Z" }, "https://developers.openai.com/api/docs/guides/reinforcement-fine-tuning.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1182,54 +1182,54 @@ "translatedAt": "2026-08-26T18:58:31.569Z" }, "https://developers.openai.com/api/docs/guides/safety-best-practices.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/safety-best-practices.md", "sourceSha256": "9d3783fc8fc9d6b3df7e5b4c7804c70cc10d76625d9db6159f3a61822c46edac", "sourceUrl": "https://developers.openai.com/api/docs/guides/safety-best-practices.md", "targetPath": "docs/zh/api/docs/guides/safety-best-practices.md", - "targetSha256": "6aeb42f28a168142f93cc28d10ff7e88c7702fc89f0586e12d20952f30350f4a", - "translatedAt": "2026-08-26T15:36:12.563Z" + "targetSha256": "fe0af60c7726ebad7fd6ac11e269798901f7bcca8ff732379783b91ba7ef9691", + "translatedAt": "2026-08-29T16:33:02.007Z" }, "https://developers.openai.com/api/docs/guides/safety-checks.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/safety-checks.md", "sourceSha256": "4d7de34e78a1b0996bcb2ac6d41bd0b318f08d819d1d703cd79cc9b7859e1380", "sourceUrl": "https://developers.openai.com/api/docs/guides/safety-checks.md", "targetPath": "docs/zh/api/docs/guides/safety-checks.md", - "targetSha256": "203eaf649b121045bcf2235e8bfd99d26e74416f9e321cbc465b885da8970ce0", - "translatedAt": "2026-08-26T15:36:38.115Z" + "targetSha256": "addc17b4303a6f4534a9e645e816e6dc19bf16efe4aa668eda6df2e7c6805d0d", + "translatedAt": "2026-08-29T16:33:47.479Z" }, "https://developers.openai.com/api/docs/guides/safety-checks/cybersecurity.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/safety-checks/cybersecurity.md", "sourceSha256": "025709e4e7a411423e058498f1b7d23b992125a1a5a4cf8f12f91bc0d1c81de7", "sourceUrl": "https://developers.openai.com/api/docs/guides/safety-checks/cybersecurity.md", "targetPath": "docs/zh/api/docs/guides/safety-checks/cybersecurity.md", - "targetSha256": "01a42857bf361783df33bab43d2c2a00d32ee88aa11e92f61766dfd78e9060bd", - "translatedAt": "2026-08-26T16:33:12.989Z" + "targetSha256": "488676069a2907f07b46ae972d7284db20207879633eb6f70878de04b610a9da", + "translatedAt": "2026-08-29T17:27:53.981Z" }, "https://developers.openai.com/api/docs/guides/safety-checks/under-18-api-guidance.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/safety-checks/under-18-api-guidance.md", "sourceSha256": "075867f837945d15c9239a237c5ca7e4aa89e918a3fb6201a7ed25e9fcf88cd4", "sourceUrl": "https://developers.openai.com/api/docs/guides/safety-checks/under-18-api-guidance.md", "targetPath": "docs/zh/api/docs/guides/safety-checks/under-18-api-guidance.md", - "targetSha256": "f8271b986787a5608fd587e6960ea0218fef544055b481d7713f8f010ce8ef12", - "translatedAt": "2026-08-26T16:36:05.722Z" + "targetSha256": "4370d161a173c4217874a2bf8455d8d88857a50b4c960e02380223486a796eca", + "translatedAt": "2026-08-29T17:28:10.871Z" }, "https://developers.openai.com/api/docs/guides/secure-mcp-tunnels.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/secure-mcp-tunnels.md", "sourceSha256": "c7b2edc6fe4b09b9b0709036577bdc332a475fd1533b1f429b40b840cdcdd21d", "sourceUrl": "https://developers.openai.com/api/docs/guides/secure-mcp-tunnels.md", "targetPath": "docs/zh/api/docs/guides/secure-mcp-tunnels.md", - "targetSha256": "8b80d2c92363e271f12c4363d938a8a2834b15b79f78bafce2bd06fe03de3841", - "translatedAt": "2026-08-26T16:37:43.257Z" + "targetSha256": "f71be27ebfac1c085b073b9b5d7ee75b48d9cf90b8345cb16da1a12e3b83fe9e", + "translatedAt": "2026-08-29T17:29:54.067Z" }, "https://developers.openai.com/api/docs/guides/speech-to-text.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1242,14 +1242,14 @@ "translatedAt": "2026-08-26T18:59:17.093Z" }, "https://developers.openai.com/api/docs/guides/spend-limits.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/spend-limits.md", "sourceSha256": "c390d663cfc85416270be1804ab1fd52f731bbaa7d2d789ea037156426b5343c", "sourceUrl": "https://developers.openai.com/api/docs/guides/spend-limits.md", "targetPath": "docs/zh/api/docs/guides/spend-limits.md", - "targetSha256": "04e24cd2a013ce486c420f5af7d949e9aee7254336affefc9d316653d033b163", - "translatedAt": "2026-08-26T15:37:56.386Z" + "targetSha256": "6ae7000cf4c42d0b463c4593b23192d61f0067899b413def2b800fdf146edfaa", + "translatedAt": "2026-08-29T16:36:18.715Z" }, "https://developers.openai.com/api/docs/guides/streaming-responses.md": { "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", @@ -1282,64 +1282,64 @@ "translatedAt": "2026-08-26T19:02:37.913Z" }, "https://developers.openai.com/api/docs/guides/terraform.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/terraform.md", "sourceSha256": "69a659fa35c6c9eb0b61e1a8b18df662fdd6b720ba0d0ed1a930310be6690624", "sourceUrl": "https://developers.openai.com/api/docs/guides/terraform.md", "targetPath": "docs/zh/api/docs/guides/terraform.md", - "targetSha256": "1bde14347dd7b7052cf368d33dafe2984ad1c6f96279d78b50f27a16cd74e7b1", - "translatedAt": "2026-08-26T16:38:03.906Z" + "targetSha256": "0f64077e79672cb27e58a7e6455afcb1970815cba44d03e989af80089ad1f7d7", + "translatedAt": "2026-08-29T17:30:31.347Z" }, "https://developers.openai.com/api/docs/guides/terraform/import-and-reconcile.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/terraform/import-and-reconcile.md", "sourceSha256": "8119be5b18afbfc1045079d8d0f719299d18d8d90577768575163d329d1b2dc3", "sourceUrl": "https://developers.openai.com/api/docs/guides/terraform/import-and-reconcile.md", "targetPath": "docs/zh/api/docs/guides/terraform/import-and-reconcile.md", - "targetSha256": "81fe10e5babe0d71d2ed2c306613e3a588173358b242f9411958486e1dcd95ff", - "translatedAt": "2026-08-26T16:38:22.133Z" + "targetSha256": "bc5a8bb8e6b8862f34e69a2f56eeba8fcd633fc440e37af2c4407b0852bf67eb", + "translatedAt": "2026-08-29T17:31:03.247Z" }, "https://developers.openai.com/api/docs/guides/terraform/project-controls.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/terraform/project-controls.md", "sourceSha256": "5e8bfa2b5a072e36da92a3d6c085559f75b58135524c428490b7b28128db534c", "sourceUrl": "https://developers.openai.com/api/docs/guides/terraform/project-controls.md", "targetPath": "docs/zh/api/docs/guides/terraform/project-controls.md", - "targetSha256": "f1a9c63d3d61889df527ee43c0bf4353dac0a40e584625b0928b943ac9c9ca5a", - "translatedAt": "2026-08-26T16:38:50.274Z" + "targetSha256": "943ca0feda245ce7252af701f1279c7b9c9e8634370aef5e5d4d44eb4a8031ac", + "translatedAt": "2026-08-29T17:31:43.998Z" }, "https://developers.openai.com/api/docs/guides/terraform/projects-and-access.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/terraform/projects-and-access.md", "sourceSha256": "9510c7e700cebae4927c163fe7b2e1826e15380b68ec6b28a5e52d64bc17577b", "sourceUrl": "https://developers.openai.com/api/docs/guides/terraform/projects-and-access.md", "targetPath": "docs/zh/api/docs/guides/terraform/projects-and-access.md", - "targetSha256": "02a23c5e590ac26659b3271a132632e57b7419a2e04552f347343052a7161e78", - "translatedAt": "2026-08-26T16:39:28.391Z" + "targetSha256": "2ffec69429fcf735e01850cc25805dec2110dc9ccc9d757451e8f92d29410fa8", + "translatedAt": "2026-08-29T17:32:32.127Z" }, "https://developers.openai.com/api/docs/guides/terraform/rate-limits-and-spend.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/terraform/rate-limits-and-spend.md", "sourceSha256": "4482d3853ec32507d0199cb236c342fc2058dd916f5b945470f677df308699a6", "sourceUrl": "https://developers.openai.com/api/docs/guides/terraform/rate-limits-and-spend.md", "targetPath": "docs/zh/api/docs/guides/terraform/rate-limits-and-spend.md", - "targetSha256": "6ea6e1ff848cd5ea56811ad4cd2f46d62a051f00dc39b07591f190718a7986b7", - "translatedAt": "2026-08-26T16:39:57.781Z" + "targetSha256": "f6c21a3a70d97607b20cad1386a608ba83f3f46f074287ed282999ee19a9a1d0", + "translatedAt": "2026-08-29T17:33:25.152Z" }, "https://developers.openai.com/api/docs/guides/terraform/service-accounts.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/terraform/service-accounts.md", "sourceSha256": "2c71a617482f96a22ae37f1596487e5bacf684939ac5c9d780bedbae5a277c39", "sourceUrl": "https://developers.openai.com/api/docs/guides/terraform/service-accounts.md", "targetPath": "docs/zh/api/docs/guides/terraform/service-accounts.md", - "targetSha256": "9df846f6b279f24a4d77e670bf0b007110f63bb4a14b372ae2aee2fab48d8fee", - "translatedAt": "2026-08-26T16:41:09.153Z" + "targetSha256": "05a505f6971765f81bc6d07bb66abad98ff3b1c660a71cb7340d4d755fd5078a", + "translatedAt": "2026-08-29T17:34:14.150Z" }, "https://developers.openai.com/api/docs/guides/text-to-speech.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1372,24 +1372,24 @@ "translatedAt": "2026-08-26T19:04:02.398Z" }, "https://developers.openai.com/api/docs/guides/tools-apply-patch.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/tools-apply-patch.md", "sourceSha256": "798a74c99dd3707d621e5221754213764a26626c6748500f617152f05ded4e2f", "sourceUrl": "https://developers.openai.com/api/docs/guides/tools-apply-patch.md", "targetPath": "docs/zh/api/docs/guides/tools-apply-patch.md", - "targetSha256": "3e153794b3c131b08a11325a4cde316fb6a5249d442d96fe97896832b0d085a3", - "translatedAt": "2026-08-26T16:41:47.785Z" + "targetSha256": "448ce09729df91ab15ddc852025bb1e3b11743a3a882b0b4d9749c9cbe5ec93d", + "translatedAt": "2026-08-29T17:35:22.472Z" }, "https://developers.openai.com/api/docs/guides/tools-code-interpreter.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/tools-code-interpreter.md", "sourceSha256": "175a7d9427f5f36444e3bad90c89194c6c3f3e6fe20eb07d2e0a8741ae265a3c", "sourceUrl": "https://developers.openai.com/api/docs/guides/tools-code-interpreter.md", "targetPath": "docs/zh/api/docs/guides/tools-code-interpreter.md", - "targetSha256": "169ac21500d2b41962dfda32b49cd6dc0453db299665c7c34d371155d522700f", - "translatedAt": "2026-08-26T15:12:11.228Z" + "targetSha256": "146b5d7621e4c50a740d4e10f1b7e5cc3457c572174bd70edb29cb1cc6220fc8", + "translatedAt": "2026-08-29T16:13:02.052Z" }, "https://developers.openai.com/api/docs/guides/tools-computer-use.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1432,14 +1432,14 @@ "translatedAt": "2026-08-26T19:07:54.660Z" }, "https://developers.openai.com/api/docs/guides/tools-local-shell.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/tools-local-shell.md", "sourceSha256": "ef51dbeface85d9e489c705a53b93632ebb2c2202031ca6727d9c7276130684f", "sourceUrl": "https://developers.openai.com/api/docs/guides/tools-local-shell.md", "targetPath": "docs/zh/api/docs/guides/tools-local-shell.md", - "targetSha256": "5b3399127a09843cece19a49b13357d6c68f3a6139e70e19c74e0ecfde80e82b", - "translatedAt": "2026-08-26T16:42:15.405Z" + "targetSha256": "2ba72577cf7551c87dbaf293021760fbc01b2ce714236a667eeb17cf9c6dc662", + "translatedAt": "2026-08-29T17:35:53.321Z" }, "https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1462,14 +1462,14 @@ "translatedAt": "2026-08-26T19:10:05.263Z" }, "https://developers.openai.com/api/docs/guides/tools-skills.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/tools-skills.md", "sourceSha256": "6a22de350d8d0cbaa3af34d693ab8771483a77053c473094e06e0bea8b301fa8", "sourceUrl": "https://developers.openai.com/api/docs/guides/tools-skills.md", "targetPath": "docs/zh/api/docs/guides/tools-skills.md", - "targetSha256": "92437f8cb37bf83b372333e610256244ef11c8242b2f82facdf7938b5833b5cb", - "translatedAt": "2026-08-26T15:48:12.521Z" + "targetSha256": "0092018d19a3daf84937da3936db30284184e57522e3837d3b422e458f511c1e", + "translatedAt": "2026-08-29T16:47:32.152Z" }, "https://developers.openai.com/api/docs/guides/tools-tool-search.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1502,44 +1502,44 @@ "translatedAt": "2026-08-26T19:12:23.162Z" }, "https://developers.openai.com/api/docs/guides/trace-grading.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/trace-grading.md", "sourceSha256": "850a2a811abcd18646ba5bef524315899aac648f0d600ff80feab47cffa34513", "sourceUrl": "https://developers.openai.com/api/docs/guides/trace-grading.md", "targetPath": "docs/zh/api/docs/guides/trace-grading.md", - "targetSha256": "cdb56b9d4d67c0905a1bbad91608b4265d30dfd31513df5d4110951943ac9131", - "translatedAt": "2026-08-26T16:42:27.684Z" + "targetSha256": "dd994c8fe85804e82c1d272042c17bba48ad47ea014e519de959cfa9c75ac66a", + "translatedAt": "2026-08-29T17:36:19.352Z" }, "https://developers.openai.com/api/docs/guides/transcription.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/transcription.md", "sourceSha256": "d0fc088d9f990e0f6c981e5a0d9de40dfd2c9dcc29a463f461449642701ccbdb", "sourceUrl": "https://developers.openai.com/api/docs/guides/transcription.md", "targetPath": "docs/zh/api/docs/guides/transcription.md", - "targetSha256": "f1f1ef296a15dbc5e48efbd127e48a30bdca2bb30cadfb74021da4a5ea917956", - "translatedAt": "2026-08-26T15:23:09.166Z" + "targetSha256": "b420f1d2540f0efce6ba48b81b7ef12652319228376213b4891699f32ed2f3d2", + "translatedAt": "2026-08-29T16:20:30.573Z" }, "https://developers.openai.com/api/docs/guides/upgrading-to-gpt-5p4.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/upgrading-to-gpt-5p4.md", "sourceSha256": "fc33ae7525d6d209dc29f98227d3ac63f0bbb9d68c0fc1fe36b6cb06ec350f11", "sourceUrl": "https://developers.openai.com/api/docs/guides/upgrading-to-gpt-5p4.md", "targetPath": "docs/zh/api/docs/guides/upgrading-to-gpt-5p4.md", - "targetSha256": "3d987a091a4fa92a25003e3581b6ca74392cc28ab3d638278e8af15e18bcb4d1", - "translatedAt": "2026-08-26T16:43:24.426Z" + "targetSha256": "e93679fb45f9942f8b7eacb509e2a00e4343786fab6b14cac86500d700b48a91", + "translatedAt": "2026-08-29T17:37:38.506Z" }, "https://developers.openai.com/api/docs/guides/upgrading-to-gpt-5p5.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/upgrading-to-gpt-5p5.md", "sourceSha256": "8c1b211b2ef893df694bed27e864a34900057c256e30a30df70bd1f37375bb19", "sourceUrl": "https://developers.openai.com/api/docs/guides/upgrading-to-gpt-5p5.md", "targetPath": "docs/zh/api/docs/guides/upgrading-to-gpt-5p5.md", - "targetSha256": "f6ab91f15552eee6bfe4d2d4e0240d929e56d62098ae8d80fdf2b10fb8bb0230", - "translatedAt": "2026-08-26T16:44:24.673Z" + "targetSha256": "90ff8a119def504db8e3ea1328193c27c1c6b7c773773d20e21f42e486fb0059", + "translatedAt": "2026-08-29T17:38:50.002Z" }, "https://developers.openai.com/api/docs/guides/upgrading-to-gpt-5p6-sol.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1562,44 +1562,44 @@ "translatedAt": "2026-08-26T19:15:29.455Z" }, "https://developers.openai.com/api/docs/guides/vision-fine-tuning.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/vision-fine-tuning.md", "sourceSha256": "d1d6b2a31516375590f4ca2e37509d71c69ef77ae7f9166c651ea0807b9138ec", "sourceUrl": "https://developers.openai.com/api/docs/guides/vision-fine-tuning.md", "targetPath": "docs/zh/api/docs/guides/vision-fine-tuning.md", - "targetSha256": "82bd1fc51280a9064060acfad9d1bfaa6ebcd2a1df34a789903c6ed20e55d6e9", - "translatedAt": "2026-08-27T01:23:19.905Z" + "targetSha256": "9cf2ae8b590b241c67134814e89bfc26ffe2b1eabbe3974dd9abaae1701b187e", + "translatedAt": "2026-08-29T17:39:49.233Z" }, "https://developers.openai.com/api/docs/guides/voice-agents.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/voice-agents.md", "sourceSha256": "5f15b6e925a5f656b42d15e1feb04b722dd2e43e2d09b3d8c14c4978a86e0d1e", "sourceUrl": "https://developers.openai.com/api/docs/guides/voice-agents.md", "targetPath": "docs/zh/api/docs/guides/voice-agents.md", - "targetSha256": "c9fb3c109ae7b1f96c57e415c81a0d5feefeac1d2ce3b988815ae4b5e6256ed8", - "translatedAt": "2026-08-26T16:45:35.432Z" + "targetSha256": "50e3bd40a8f0a43c2541b6d8fd22d59aabd869255128716224a5896ea94db660", + "translatedAt": "2026-08-29T17:40:30.844Z" }, "https://developers.openai.com/api/docs/guides/webhooks.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/webhooks.md", "sourceSha256": "c647843e21c03cd1db2ae64aa08325781df71148e48ac9e2e2212c93a7a549ab", "sourceUrl": "https://developers.openai.com/api/docs/guides/webhooks.md", "targetPath": "docs/zh/api/docs/guides/webhooks.md", - "targetSha256": "981d5eb1778613d83241227a111aaeebbaa625aa0a0d37abf795be7162984c0d", - "translatedAt": "2026-08-26T15:38:19.355Z" + "targetSha256": "da34bc66844aa07447470ca608c0ae790346fb34bfd4fb3332dd12797b702851", + "translatedAt": "2026-08-29T16:36:52.912Z" }, "https://developers.openai.com/api/docs/guides/websocket-mode.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/websocket-mode.md", "sourceSha256": "0360e80caba6ac02901b0b0e6b5ea5c724d01112258baebad690f6009fa4a721", "sourceUrl": "https://developers.openai.com/api/docs/guides/websocket-mode.md", "targetPath": "docs/zh/api/docs/guides/websocket-mode.md", - "targetSha256": "f536977e4ab42c48c8d631bd7b30463e98432ddd9b076f4a90b34c889e551cee", - "translatedAt": "2026-08-26T16:46:27.465Z" + "targetSha256": "3187f82c2d082fd811137f9fc132a2a3ccb16d1a1462b84fe2771a965bf68cc4", + "translatedAt": "2026-08-29T17:41:37.677Z" }, "https://developers.openai.com/api/docs/guides/workload-identity-federation.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1612,14 +1612,14 @@ "translatedAt": "2026-08-26T19:17:20.684Z" }, "https://developers.openai.com/api/docs/guides/workload-identity-federation/admin-api.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/workload-identity-federation/admin-api.md", "sourceSha256": "d2508ee0324a1a0bfc8ff8ab9823291139fee4377f9a4cd16eb420f7fa29cb75", "sourceUrl": "https://developers.openai.com/api/docs/guides/workload-identity-federation/admin-api.md", "targetPath": "docs/zh/api/docs/guides/workload-identity-federation/admin-api.md", - "targetSha256": "fc5db76ecbb27ca48be299fd841caef0ef3fb3c3ec2435c76d200a88c6baecf4", - "translatedAt": "2026-08-26T16:47:30.119Z" + "targetSha256": "3c3dc009f68cc07249ab03c713964db92ab42c3d075532842668b689fefa0195", + "translatedAt": "2026-08-29T17:43:16.200Z" }, "https://developers.openai.com/api/docs/guides/workload-identity-federation/aws.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1632,14 +1632,14 @@ "translatedAt": "2026-08-26T19:18:30.701Z" }, "https://developers.openai.com/api/docs/guides/workload-identity-federation/federation-rules.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/guides/workload-identity-federation/federation-rules.md", "sourceSha256": "552153404d979695473334c7b6b0c01ec720ba2173e5c9314a76fce6b123cdc9", "sourceUrl": "https://developers.openai.com/api/docs/guides/workload-identity-federation/federation-rules.md", "targetPath": "docs/zh/api/docs/guides/workload-identity-federation/federation-rules.md", - "targetSha256": "e1627c5ca1df306e65a0409c8989ac3f28265c98b344a45d340d37619dd6e2b8", - "translatedAt": "2026-08-26T16:48:23.007Z" + "targetSha256": "571cb2e15e11e9c34b282c899f83e04f9613e7e91c8978ef742172e6f1114aec", + "translatedAt": "2026-08-29T17:44:55.522Z" }, "https://developers.openai.com/api/docs/guides/workload-identity-federation/github-actions.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", @@ -1722,24 +1722,24 @@ "translatedAt": "2026-08-26T19:23:45.706Z" }, "https://developers.openai.com/api/docs/libraries.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/libraries.md", "sourceSha256": "ea5345918819b7975fbc32d62cfe9b175788c02bef823b363c971191542caabe", "sourceUrl": "https://developers.openai.com/api/docs/libraries.md", "targetPath": "docs/zh/api/docs/libraries.md", - "targetSha256": "34cf80bb02ddccb24ff3cdad88442f477b14e834c03b5acf657db71b06d14e7f", - "translatedAt": "2026-08-26T15:39:56.339Z" + "targetSha256": "f9f4fda0c448421990fa0869540b3afbb51df675d39c2136e1ff1597ea9ecd8c", + "translatedAt": "2026-08-29T16:39:09.152Z" }, "https://developers.openai.com/api/docs/libraries/openai-cli.md": { - "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", + "policySha256": "5d41c8a7a73acf25529f1beffa364a03666ea413b7e792e6db794b8f801777b5", "reviewStatus": "machine", "sourcePath": "docs/en/api/docs/libraries/openai-cli.md", "sourceSha256": "a386c52371a461b0fca09de330c4fb4acee734e93d4cc0291015a32c0d552140", "sourceUrl": "https://developers.openai.com/api/docs/libraries/openai-cli.md", "targetPath": "docs/zh/api/docs/libraries/openai-cli.md", - "targetSha256": "48930b298ccc407a93026153d82fc5d8d5a0374399160f84b50313569d382252", - "translatedAt": "2026-08-26T15:40:55.405Z" + "targetSha256": "0891dea0834bd910f0c3a44b4f3c96c604eb8a75545758527a14a7e7d2e2311c", + "translatedAt": "2026-08-29T16:40:57.207Z" }, "https://developers.openai.com/api/docs/mcp.md": { "policySha256": "6e9b1538f41ab5d3db960df19d735ece2c894fe9182904cf1d818170eaeeb7c2", diff --git a/docs/zh/api/docs/actions/actions-library.md b/docs/zh/api/docs/actions/actions-library.md index 2b47c17..835cc16 100644 --- a/docs/zh/api/docs/actions/actions-library.md +++ b/docs/zh/api/docs/actions/actions-library.md @@ -1,47 +1,47 @@ -# GPT Actions 库 +# GPT Actions library -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 来获取。 -## 目的 +## 用途 -尽管对于 API 开发者来说,设置 GPT Actions 的工作量应远小于从头构建一个使用这些 API 的完整应用程序,但要让 GPT Actions 正常运行仍然需要进行一些设置。GPT Actions 库旨在为在常见应用程序上构建 GPT Actions 提供指导。 +虽然相较于从零开始构建使用这些 API 的完整应用,GPT Actions 对 API 开发者的搭建工作量已大幅减少,但要启动并运行 GPT Actions 仍需要一些配置。GPT Actions 资料库旨在为在常见应用上构建 GPT Actions 提供指导。 -## 快速开始 +## 入门指南 -如果你以前从未构建过操作,请先阅读 [入门指南](https://developers.openai.com/api/docs/actions/getting-started) 以更好地理解操作的工作原理。 +如果你从未构建过 action,请先阅读 [入门指南](https://developers.openai.com/api/docs/actions/getting-started) ,以便更好地了解 action 的工作原理。 -通常,本指南面向熟悉并能自如调用 API 调用的人群。如需调试帮助,请尝试向 ChatGPT 解释你的问题,并附上截图。 +一般来说,本指南面向熟悉并能够自如调用 API 的用户。如果需要调试帮助,请尝试向 ChatGPT 描述你遇到的问题,并附上截图。 -## 如何访问 +## 访问方式 -[OpenAI Cookbook](https://developers.openai.com/cookbook) 有一个 [目录](https://developers.openai.com/cookbook/topic/chatgpt) ,其中收录了第三方应用程序和中间件应用。 +[OpenAI Cookbook](https://developers.openai.com/cookbook) 提供了一个 [目录](https://developers.openai.com/cookbook/topic/chatgpt) ,其中收录了第三方应用程序和中间件应用。 -### 第三方 Actions 手册 +### 第三方 Actions cookbook -GPT Actions 可以直接与 HTTP 服务集成。GPT Actions 利用 SaaS API 将直接从 SaaS 提供商(如 [Google Drive](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_action_google_drive) 或 [Snowflake](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_action_snowflake_direct). +GPT Actions 可以直接与 HTTP 服务集成。直接利用 SaaS API 的 GPT Actions 将直接从 SaaS 提供商(例如 [Google Drive](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_action_google_drive) 或 [Snowflake](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_action_snowflake_direct). -### Middleware Actions 操作手册 +### Middleware Actions cookbook -GPT Actions 可以受益于拥有中间件。它允许进行预处理、数据格式化、数据过滤,甚至连接到未通过 HTTP 暴露的端点(例如:数据库)。有多个中间件 cookbook 提供了示例实现路径的描述,例如 [Azure](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_middleware_azure_function), [GCP](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_middleware_google_cloud_function) 和 [AWS](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_middleware_aws_function). +GPT Actions 可以从中间件中受益。它允许预处理、数据格式化、数据过滤,甚至连接到未通过 HTTP 暴露的端点(例如:数据库)。多个中间件 cookbook 可用于描述示例实现路径,例如 [Azure](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_middleware_azure_function), [GCP](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_middleware_google_cloud_function) 和 [AWS](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_middleware_aws_function). -## 向我们提供反馈 +## 向我们反馈 -是否有你希望我们优先处理的集成?我们的集成中是否存在错误?请在 cookbook 页面的 GitHub 上提交 PR 或 issue,我们会查看。 +有没有希望我们优先支持的集成?我们的集成里有没有错误?请在 cookbook 页面的 GitHub 上提交 PR 或 issue,我们会查看。 -## 为我们的库做贡献 +## 为我们的文档库做贡献 -如果你有兴趣为我们的库做贡献,请遵循以下指南,然后在 github 上提交 PR 供我们审查。总体而言,请遵循类似 [此示例 GPT 行动](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_action_bigquery). +如果你有兴趣为我们的库做出贡献,请遵循以下指南,然后在 github 中提交 PR 以供我们审阅。通常,遵循类似于 [这个 GPT Action 示例](https://developers.openai.com/cookbook/examples/chatgpt/gpt_actions_library/gpt_action_bigquery). -指南 - 包含以下部分: +指南 - 包含以下章节: -- 应用信息 - 描述第三方应用,并包含应用网站链接和API文档 -- 自定义 GPT 指令 - 包含要纳入自定义 GPT 的准确指令 -- OpenAPI架构 - 包含要在 GPT Action 中纳入的准确 OpenAPI架构 -- 身份验证说明 - 对于 OAuth,包含确切的项目集(授权 URL、令牌 URL、作用域等);还包括如何在应用程序中编写回调 URL 的说明(以及任何其他步骤) -- 常见问题与故障排除 - 用户可能遇到的常见陷阱是什么?在这里写下它们及解决方法 +- Application Information - 描述第三方应用,并附上应用网站链接以及 API 文档 +- Custom GPT Instructions - 包含要在 Custom GPT 中包含的精确指令 +- OpenAPI Schema - 包含要在 GPT Action 中包含的精确 OpenAPI schema +- Authentication Instructions - 对于 OAuth,包含精确的项目集(授权 URL、token URL、scope 等);同时包含如何在应用中编写回调 URL 的说明(以及其他步骤) +- FAQ and Troubleshooting - 用户可能遇到的常见问题有哪些?在此列出以及对应的解决方法 ## 免责声明 -此操作库旨在作为与 OpenAI 无法控制的第三方交互的指南。这些第三方可能会更改其 API 设置或配置,而 OpenAI 无法保证这些操作能永久有效。请将它们视为起点。 +此 Actions 库旨在作为与不受 OpenAI 控制的第三方交互的指南。这些第三方可能会更改其 API 设置或配置,且 OpenAI 无法保证这些 Actions 将永久有效。请将其视为一个起点。 -本指南面向开发人员以及熟悉编写 API 调用的人员。非技术用户可能会觉得这些步骤具有挑战性。 \ No newline at end of file +本指南面向具备编写 API 调用经验的开发者和相关人员。非技术用户可能会觉得这些步骤具有挑战性。 \ No newline at end of file diff --git a/docs/zh/api/docs/actions/authentication.md b/docs/zh/api/docs/actions/authentication.md index e62f21f..acd8629 100644 --- a/docs/zh/api/docs/actions/authentication.md +++ b/docs/zh/api/docs/actions/authentication.md @@ -1,42 +1,42 @@ -# GPT 操作身份验证 +# GPT Action 身份验证 -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。此外,在页面 URL 后追加 `.md` 即可获取文档页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。你也可以在页面 URL 末尾追加 `.md` 来获取对应文档页面的 Markdown 版本。 -操作提供不同的认证方案,以满足各种使用场景。要为你的操作指定认证方案,请使用 GPT 编辑器并选择“None”、“API Key”或“OAuth”。 +Actions 提供不同的身份验证方案以适应各种用例。若要为你的 action 指定身份验证方案,请使用 GPT 编辑器并选择 "None"、"API Key" 或 "OAuth"。 -默认情况下,所有操作的认证方式均设为“None”,但你可以更改此设置,并允许不同操作使用不同的认证方式。 +默认情况下,所有 actions 的身份验证方法均设置为 "None",但你可以更改此设置,并允许不同的 action 使用不同的身份验证方法。 -## 无需认证 +## 无身份验证 -我们支持无需认证的流程,适用于用户可以直接向你的 API 发送请求而无需 API 密钥或通过 OAuth 登录的应用程序。 +我们支持无认证流程,适用于用户可以直接向你的API发送请求而无需API密钥或通过 OAuth 登录的应用场景。 -考虑在初始用户交互时不使用认证,因为如果用户被迫登录应用程序,可能会导致用户流失。你可以创建“已登出”体验,然后通过启用单独操作将用户移至“已登录”体验。 +对于初次用户交互,请考虑使用无认证方式,因为强制用户登录应用可能会导致用户流失。你可以创建一个“未登录”体验,然后通过启用单独的操作将用户迁移到“已登录”体验。 ## API 密钥认证 -正如用户可能已经在使用你的 API 一样,我们也允许通过 GPT 编辑器界面使用 API 密钥认证。我们在数据库中存储密钥时会对其进行加密,以确保你的 API 密钥安全。 +就像用户可能已经在使用你的 API 一样,我们也允许通过 GPT 编辑器界面进行 API 密钥身份验证。我们在将密钥存入数据库时对其加密,以确保你的 API 密钥安全。 -如果你有一个 API 执行的操作比无认证流程更具影响力,但又不需要单个用户登录,这种方法就会很有用。添加 API 密钥认证可以保护你的 API,并为你提供更精细的访问控制以及请求来源的可见性。 +如果你的 API 会执行比无身份验证流程影响稍大的操作,但又不要求每个用户单独登录,那么这种做法非常有用。添加 API 密钥身份验证可以保护你的 API,并提供更细粒度的访问控制,以及对请求来源的可观测性。 ## OAuth -操作允许每位用户进行 OAuth 登录。这是提供个性化体验并让用户获得最强大功能的最佳方式。带操作功能的 OAuth 流程的一个简单示例如下: +Actions 允许为每个用户进行 OAuth 登录。这是提供个性化体验并让用户使用最强大的 actions 的最佳方式。下面是使用 actions 的 OAuth 流程的一个简单示例: -- 首先,在 GPT 编辑器界面中选择“认证”,然后选择“OAuth”。 -- 系统将提示你输入 OAuth 客户端 ID、客户端密钥、授权 URL、令牌 URL 和作用域。 - - 客户端 ID 和密钥可以是简单的文本字符串,但应 [遵循 OAuth 最佳实践](https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/). - - 我们会存储客户端密钥的加密版本,而客户端 ID 对最终用户可见。 -- OAuth 请求将包含以下信息: `request={'grant_type': 'authorization_code', 'client_id': 'YOUR_CLIENT_ID', 'client_secret': 'YOUR_CLIENT_SECRET', 'code': 'abc123', 'redirect_uri': 'https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback'}` 注意: `https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback` 也是有效的。 -- 为了让用户使用带 OAuth 的操作,他们需要发送一条调用该操作的消息,然后在 ChatGPT 界面中会显示一个“登录 [域名]”按钮。 -- 该 `authorization_url` 端点应返回如下响应: +- 首先,在 GPT 编辑器界面中选择 “Authentication”,然后选择 “OAuth”。 +- 系统会提示你输入 OAuth 客户端 ID、客户端密钥、授权 URL、令牌 URL 和 scope(作用域)。 + - 客户端 ID 和密钥可以是简单的文本字符串,但应当 [遵循 OAuth 最佳实践](https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/). + - 我们会存储加密后的客户端密钥,而客户端 ID 对终端用户可见。 +- OAuth 请求将包含以下信息: `request={'grant_type': 'authorization_code', 'client_id': 'YOUR_CLIENT_ID', 'client_secret': 'YOUR_CLIENT_SECRET', 'code': 'abc123', 'redirect_uri': 'https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback'}` 注意: `https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback` 同样有效。 +- 若要使某人能够使用带有 OAuth 的操作,他们需要发送一条会触发该操作的消息,随后用户将在 ChatGPT 界面中看到一个 “Sign in to [domain]” 按钮。 +- 该 `authorization_url` 端点应返回如下所示的响应: `{ "access_token": "example_token", "token_type": "bearer", "refresh_token": "example_token", "expires_in": 59 }` -- 在用户登录过程中,ChatGPT 会向你的 `authorization_url` 发出请求,使用指定的 `authorization_content_type`,我们期望收到一个访问令牌,以及可选的 [刷新令牌](https://auth0.com/learn/refresh-tokens) ,我们用它定期获取新的访问令牌。 -- 每次用户向该操作发出请求时,用户的令牌都会在 Authorization 头中传递:("Authorization": "[Bearer/Basic] [user's token]")。 -- 我们要求 OAuth 应用使用 [状态参数](https://auth0.com/docs/secure/attack-protection/state-parameters#set-and-compare-state-parameter-values) 以确保安全。 +- 在用户登录过程中,ChatGPT 会向你的 `authorization_url` 发起请求,使用指定的 `authorization_content_type`,我们预期会收到一个访问令牌,以及可选的 [刷新令牌](https://auth0.com/learn/refresh-tokens) ,我们用它定期获取新的访问令牌。 +- 每当用户向该操作发起请求时,用户的令牌将通过 Authorization 头传递:("Authorization": "[Bearer/Basic] [user's token]")。 +- 我们要求 OAuth 应用程序使用 [state 参数](https://auth0.com/docs/secure/attack-protection/state-parameters#set-and-compare-state-parameter-values) 以确保安全。 -自定义 GPT 上无法登录的问题(重定向 URL)? +自定义 GPT 上的登录失败问题(重定向 URL)? -- 请务必在 OAuth 应用中启用此重定向 URL: -- #1 重定向 URL: `https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback` (某些客户端可能使用不同域名) -- #2 重定向 URL: `https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback` (保存后在 ChatGPT 界面 URL 栏中获取你的 GPT ID)如果你有多个 GPT,需要为每个 GPT 启用,或根据风险承受能力使用通配符。 -- 调试说明:你的身份验证提供程序通常会记录失败(例如“redirect_uri 未注册到客户端”),这也有助于排查登录问题。 \ No newline at end of file +- 请确保在你的 OAuth 应用中启用此重定向 URL: +- #1 重定向 URL: `https://chat.openai.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback` (某些客户端的域名可能不同) +- #2 重定向 URL: `https://chatgpt.com/aip/{g-YOUR-GPT-ID-HERE}/oauth/callback` (保存后在 ChatGPT 界面的 URL 栏中获取你的 GPT ID)如果你有多个 GPT,需要分别为每个启用,或根据风险偏好使用通配符。 +- 调试提示:你的身份提供方通常会记录失败信息(例如“redirect_uri is not registered for client”),这也有助于排查登录问题。 \ No newline at end of file diff --git a/docs/zh/api/docs/actions/data-retrieval.md b/docs/zh/api/docs/actions/data-retrieval.md index e8c102e..302c020 100644 --- a/docs/zh/api/docs/actions/data-retrieval.md +++ b/docs/zh/api/docs/actions/data-retrieval.md @@ -1,76 +1,76 @@ # 使用 GPT Actions 进行数据检索 -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt). 在页面 URL 末尾添加 `.md` 即可获取 Markdown 版本的文档页面。 -GPT 中操作可执行的最常见任务之一就是数据检索。操作可能: +GPT 中的 action 最常见的任务之一就是数据检索。一个 action 可以: -1. 访问 API 根据关键词搜索检索数据 -2. 访问关系数据库,根据结构化查询检索记录 -3. 访问向量数据库,根据语义搜索检索文本块 +1. 访问一个 API 以根据关键词搜索检索数据 +2. 访问关系型数据库以根据结构化查询检索记录 +3. 访问向量数据库以根据语义搜索检索文本片段 -在本指南中,我们将探讨针对各种类型的检索集成所需考虑的具体事项。 +我们将在本指南中探讨针对不同类型检索集成的具体注意事项。 -## 使用API进行数据检索 +## 使用 APIs 进行数据检索 -许多组织依赖第三方软件来存储重要数据。例如,Salesforce 用于客户数据,Zendesk 用于支持数据,Confluence 用于内部流程数据,Google Drive 用于商业文档。这些提供商通常提供 REST API,使外部系统能够搜索和检索信息。 +许多组织依赖第三方软件来存储重要数据。例如 Salesforce 用于客户数据、Zendesk 用于支持数据、Confluence 用于内部流程数据、Google Drive 用于业务文档。这些提供商通常提供 REST API,使外部系统能够搜索并检索信息。 -在构建操作以集成提供商的 REST API 时,首先查看现有文档。你需要确认以下几点: +在为与提供商的 REST API 集成构建动作时,首先需要查阅现有文档。你需要确认以下几点: 1. 检索方法 - - **搜索** - 每个提供商将支持不同的搜索语义,但通常你需要一个接受关键词或查询字符串并返回匹配文档列表的方法。请参阅 [Google Drive 的 `file.list` 方法](https://developers.google.com/drive/api/guides/search-files) 作为示例。 - - **获取** - 一旦你找到了匹配的文档,你需要一种方法来检索它们。请参阅 [Google Drive 的 `file.get` 方法](https://developers.google.com/drive/api/reference/rest/v3/files/get) 作为示例。 + - **搜索** - 每个提供商支持的搜索语义各不相同,但通常你会需要一个接受关键词或查询字符串并返回匹配文档列表的方法。参见 [Google Drive 的 `file.list` 方法](https://developers.google.com/drive/api/guides/search-files) 示例。 + - **获取** - 找到匹配的文档后,你需要一种方式来检索它们。参见 [Google Drive 的 `file.get` 方法](https://developers.google.com/drive/api/reference/rest/v3/files/get) 示例。 2. 认证方案 - - 例如, [Google Drive 使用 OAuth](https://developers.google.com/workspace/guides/configure-oauth-consent) 来认证用户并确保只有他们可用的文件可供检索。 + - 例如, [Google Drive 使用 OAuth](https://developers.google.com/workspace/guides/configure-oauth-consent) 对用户进行认证,确保只有他们可用的文件可供检索。 3. OpenAPI 规范 - - 某些提供商将提供 OpenAPI 规范文档,你可以直接将其导入到你的操作中。请参阅 [Zendesk](https://developer.zendesk.com/api-reference/ticketing/introduction/#download-openapi-file),作为示例。 - - 你可能需要移除对你的 GPT _不会_ 访问,这会限制你的 GPT 可以执行的操作。 - - 对于未 _提供_ OpenAPI 规范文档的提供商,你可以使用 [ActionsGPT](https://chatgpt.com/g/g-TYEliDU6A-actionsgpt) (一个由 OpenAI 开发的 GPT)创建自己的规范。 + - 某些提供商提供 OpenAPI 规范文档,你可以直接导入到你的动作中。参见 [Zendesk](https://developer.zendesk.com/api-reference/ticketing/introduction/#download-openapi-file),作为示例。 + - 你可能需要移除你的 GPT _无法_ 访问的方法的引用,这会限制你的 GPT 可执行的动作。 + - 对于提供商而言, _不要_ 提供 OpenAPI 规范文档,你可以使用 [ActionsGPT](https://chatgpt.com/g/g-TYEliDU6A-actionsgpt) (由 OpenAI 开发的 GPT)自行创建。 -你的目标是让 GPT 使用该操作来搜索并检索包含与用户提示相关的上下文的文档。你的 GPT 会遵循你的指令,使用所提供的搜索和获取方法来实现这一目标。 +你的目标是让 GPT 使用该动作来搜索并获取包含与用户提示相关上下文的文档。你的 GPT 会按照你的指示,使用提供的 search 和 get 方法来实现此目标。 ## 使用关系型数据库进行数据检索 -组织使用关系数据库存储与其业务相关的各种记录。这些记录可能包含有助于改善你的 GPT 响应的有用上下文。例如,假设你正在构建一个 GPT,帮助用户了解保险理赔的状态。如果 GPT 能够根据理赔编号在关系数据库中查找理赔信息,那么这个 GPT 对用户将更加有用。 +组织通常使用关系型数据库来存储与其业务相关的各类记录。这些记录中可能包含有助于提升 GPT 回复质量的有效上下文。例如,假设你正在构建一个帮助用户了解保险理赔状态的 GPT。如果该 GPT 能够根据理赔号码在关系型数据库中查询理赔记录,那么它对用户来说将会更加实用。 -在构建操作以与关系数据库集成时,有几点需要注意: +在为与关系型数据库集成构建动作时,需要注意以下几点: -1. REST API的可用性 - - 许多关系型数据库本身并不提供用于处理查询的 REST API。在这种情况下,你可能需要构建或购买中间件,将其置于你的 GPT 与数据库之间。 +1. REST API 的可用性 + - 许多关系型数据库并未原生暴露用于处理查询的 REST API。在这种情况下,你可能需要自行构建或购买中间件,使其能够位于 GPT 与数据库之间。 - 该中间件应完成以下工作: - - 接受正式的查询字符串 + - 接收正式的查询字符串 - 将查询字符串传递给数据库 - - 将返回的记录响应给请求方 -2. 可从公共互联网访问 - - 与设计用于从公共互联网访问的 API不同,关系型数据库传统上设计用于组织内部的应用程序基础设施中。由于 GPT 托管在 OpenAI 的基础设施上,你需要确保所暴露的任何 API 都能从防火墙外部访问。 + - 将返回的记录响应回请求方 +2. 从公共互联网的可访问性 + - 与面向公共互联网访问设计的 API 不同,关系型数据库传统上设计为在组织内部的应用基础设施中使用。由于 GPT 托管在 OpenAI 的基础设施上,你需要确保你所暴露的任何 API 能够在防火墙之外被访问。 3. 复杂的查询字符串 - - 关系型数据库使用诸如 SQL 之类的正式查询语法来检索相关记录。这意味着你需要向 GPT 提供额外的说明,指明支持哪种查询语法。好消息是,GPT 通常非常擅长根据用户输入生成正式的查询。 + - 关系型数据库使用类似 SQL 的正式查询语法来检索相关记录。这意味着你需要向 GPT 提供额外的指令,告知其支持哪种查询语法。好消息是,GPT 通常非常擅长根据用户输入生成正式查询。 4. 数据库权限 - - 尽管数据库支持用户级权限,但你的最终用户很可能没有权限直接访问数据库。如果你选择使用服务账户来提供访问权限,可以考虑为服务账户授予只读权限。这可以避免意外覆盖或删除现有数据。 + - 尽管数据库支持用户级权限,但你的终端用户很可能没有权限直接访问数据库。如果你选择使用服务账号来提供访问权限,请考虑为该服务账号授予只读权限。这可以避免无意中覆盖或删除现有数据。 -你的目标是让 GPT 编写一条与用户提示相关的正式查询,通过该操作提交查询,然后使用返回的记录来增强响应。 +你的目标是让 GPT 写出与用户提示相关的正式查询,通过该操作提交查询,然后使用返回的记录来增强响应。 ## 使用向量数据库进行数据检索 -如果你想为你的 GPT 配备最相关的搜索结果,你可以考虑将你的 GPT 与支持上述语义搜索的向量数据库集成。市场上有许多托管和自托管解决方案, [此处查看部分列表](https://github.com/openai/chatgpt-retrieval-plugin#choosing-a-vector-database). +如果你希望为你的 GPT 提供最相关的搜索结果,可以考虑将你的 GPT 与支持语义搜索的向量数据库集成,如上所述。市面上有许多托管和自托管的解决方案, [参见此处获取部分列表](https://github.com/openai/chatgpt-retrieval-plugin#choosing-a-vector-database). -在构建与向量数据库集成的操作时,需要记住以下几点: +在构建与向量数据库集成的 action 时,需要注意以下几点: 1. REST API 的可用性 - - 许多关系型数据库并不原生提供用于处理查询的 REST API。在这种情况下,你可能需要构建或购买位于 GPT 和数据库之间的中间件(下文有更多关于中间件的内容)。 + - 许多关系型数据库并未原生提供用于处理查询的 REST API。在这种情况下,你可能需要自建或购买中间件,让它位于你的 GPT 和数据库之间(下文将详细介绍中间件)。 2. 从公共互联网的可访问性 - - 与设计为从公共互联网访问的 API 不同,关系型数据库传统上设计用于组织内部的应用基础设施。由于 GPT 托管在 OpenAI 的基础设施上,你需要确保你公开的任何 API 都能在防火墙之外访问。 + - 与面向公共互联网访问设计的 API 不同,关系型数据库传统上设计为在组织内部的应用基础设施中使用。由于 GPT 托管在 OpenAI 的基础设施上,你需要确保你所暴露的任何 API 能够在防火墙之外被访问。 3. 查询嵌入 - - 如上所述,向量数据库通常接受向量嵌入(而非纯文本)作为查询输入。这意味着你需要使用嵌入 API 将查询输入转换为向量嵌入,然后才能将其提交给向量数据库。这种转换最好在 REST API 网关中处理,以便 GPT 可以提交纯文本查询字符串。 + - 如上所述,向量数据库通常接受向量嵌入(而非纯文本)作为查询输入。这意味着你需要先使用嵌入 API 将查询输入转换为向量嵌入,然后才能提交给向量数据库。这种转换最适合在 REST API 网关中处理,这样 GPT 就可以提交纯文本的查询字符串。 4. 数据库权限 - - 由于向量数据库存储文本块而非完整文档,因此可能难以维持原始源文档上可能存在的用户权限。请记住,任何能够访问你的 GPT 的用户都将访问数据库中的所有文本块,并据此进行规划。 + - 由于向量数据库存储的是文本片段而非完整文档,可能难以维持原始源文档上原本存在的用户权限。请注意,任何能够访问你的 GPT 的用户都将能够访问数据库中的所有文本片段,请据此进行规划。 ### 向量数据库的中间件 -如上所述,向量数据库的中间件通常需要做两件事: +如上所述,向量数据库的中间件通常需要完成两件事: -1. 通过 REST API 提供对向量数据库的访问 -2. 将纯文本查询字符串转换为向量嵌入 +1. 通过 REST API 暴露对向量数据库的访问 +2. 将明文查询字符串转换为向量嵌入 -![向量数据库中间件](https://cdn.openai.com/API/docs/images/actions-db-diagram.webp) +![向量数据库的中间件](https://cdn.openai.com/API/docs/images/actions-db-diagram.webp) -目标在于让你的 GPT 向向量数据库提交相关查询以触发语义搜索,然后利用返回的文本块来增强响应。 \ No newline at end of file +目标是让你的 GPT 向向量数据库提交一个相关查询以触发语义搜索,然后使用返回的文本片段来增强响应。 \ No newline at end of file diff --git a/docs/zh/api/docs/actions/getting-started.md b/docs/zh/api/docs/actions/getting-started.md index 88f87e1..8573b6f 100644 --- a/docs/zh/api/docs/actions/getting-started.md +++ b/docs/zh/api/docs/actions/getting-started.md @@ -1,21 +1,21 @@ # GPT Actions 入门 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 获取文档页面的 Markdown 版本。 ## Weather.gov 示例 -新南威尔士州国家气象局(NSW (National Weather Service))维护一个 [公开 API](https://www.weather.gov/documentation/services-web-api) ,用户可查询它来获取任意经纬度点的天气预报。要获取预报,需执行 2 个步骤: +NSW(National Weather Service)维护着一个 [公开的 API](https://www.weather.gov/documentation/services-web-api) 用户可以查询该 接口 以获取任意经纬度位置的天气预报。要获取预报,需要完成 2 个步骤: -1. 用户向 api.weather.gov/points API 提供经纬度,并收到 WFO(天气预报办公室)、网格 X 和网格 Y 坐标 -2. 这 3 个元素输入 api.weather.gov/forecast API 以检索该坐标的天气预报 +1. 用户提供一个经纬度给 api.weather.gov/points API,并收到返回的 WFO(天气预报办公室)、grid-X 和 grid-Y 坐标 +2. 这 3 个元素被传入 api.weather.gov/forecast API,以检索该坐标的天气预报 -为了本次练习的目的,让我们构建一个自定义 GPT,用户在其中输入城市、地标或经纬度坐标,自定义 GPT 将回答有关该位置天气预报的问题。 +在本练习中,让我们构建一个 Custom GPT,用户在其中输入城市、地标或经纬度坐标,该 Custom GPT 会回答有关该位置天气预报的问题。 -## 步骤 1:编写并测试 Open API schema(使用 Actions GPT) +## Step 1: 使用 Actions GPT 编写并测试 Open API 架构 -一个 GPT 操作需要一个 [Open API schema](https://swagger.io/specification/) 来描述 API 调用的参数,这是描述 API 的标准。 +GPT Action 需要一个 [Open API schema](https://swagger.io/specification/) 来描述 API 调用的参数,这是描述 API 的标准。 -OpenAI 发布了一个公开的 [Actions GPT](https://chatgpt.com/g/g-TYEliDU6A-actionsgpt) 来帮助开发者编写此 schema。例如,前往 Actions GPT 并询问: _“前往 https://www.weather.gov/documentation/services-web-api 并阅读该页面上的文档。为 /points/ 构建一个 Open API Schema/\{latitude},\{longitude} 和 /gridpoints/\{office}/\{gridX},\{gridY}/forecast” API 调用”_ +OpenAI 发布了一个公开的 [Actions GPT](https://chatgpt.com/g/g-TYEliDU6A-actionsgpt) 来帮助开发者编写此 schema。例如,前往 Actions GPT 并询问: _“前往 https://www.weather.gov/documentation/services-web-api 并阅读该页面的文档。为 /points/\{latitude}、\{longitude} 和 /gridpoints/\{office}/\{gridX}、\{gridY}/forecast 这两个 API 调用构建一个 Open API Schema”_ Choosing to import your API with Postman -## 第 2 步:确定身份验证要求 +## 步骤 2:确定身份验证要求 -这个 Weather 第三方服务不需要认证,因此对于这个自定义 GPT,你可以跳过该步骤。对于其他确实需要认证的 GPT Actions,有两个选项:API 密钥或 OAuth。对于大多数常见应用,询问 ChatGPT 可以帮助你开始。例如,如果我需要使用 OAuth 向 Google Cloud 进行认证,我可以提供一张截图并询问细节: _“我正在通过 OAuth 建立与 Google Cloud 的连接。请提供如何填写每个框的说明。”_ +这个 Weather 第三方服务不需要身份验证,因此你可以在这个 Custom GPT 中跳过该步骤。对于确实需要身份验证的其他 GPT Actions,有两种选项:API Key 或 OAuth。向 ChatGPT 提问可以帮助你入门大多数常见应用。例如,如果我需要使用 OAuth 对 Google Cloud 进行身份验证,我可以提供一张截图并询问细节: _“我正在通过 OAuth 构建与 Google Cloud 的连接。请提供关于如何填写这些框中每一项的说明。”_ The above ChatGPT request -通常,ChatGPT 会就所有 5 个要素提供正确的指示。一旦你准备好这些基础知识,请尝试在 Postman 或其他类似服务中测试和调试认证。如果你遇到错误,请将该错误提供给 ChatGPT,它通常可以帮助你从那里开始调试。 +通常,ChatGPT 会在全部 5 个元素上给出正确的指引。一旦你准备好这些基础内容,就可以尝试在 Postman 或其他类似服务中测试和调试身份验证。如果遇到错误,把错误信息提供给 ChatGPT,它通常能帮助你从此处进行调试。 -## 步骤 3:创建 GPT 操作并进行测试 +## 步骤 3:创建 GPT Action 并测试 -现在是时候创建你的自定义 GPT 了。如果你以前从未创建过自定义 GPT,请从我们的 [创建 GPT 指南](https://help.openai.com/en/articles/8554397-creating-a-gpt). +现在是创建你的自定义 GPT 的时候了。如果你以前从未创建过自定义 GPT,请从我们的 [创建 GPT 指南](https://help.openai.com/en/articles/8554397-creating-a-gpt). 1. 提供名称、描述和图片来描述你的自定义 GPT -2. 转到“操作”部分并粘贴你的 Open API 架构。编写指令时,记下操作名称和 JSON 参数。 -3. 添加你的认证设置 -4. 返回主页面并添加指令 +2. 进入 Action 部分,粘贴你的 OpenAPI 架构。编写指令时记下 Action 名称和 JSON 参数。 +3. 添加你的身份验证设置 +4. 返回主页并添加指令 -编写成功指令的方式有很多种:最重要的是指令能让模型反映用户的偏好。 +编写有效指令的方式有很多:最重要的是,这些指令能够让模型反映出用户的偏好。 -通常包含三个部分: +通常来说,指令包含三个部分: -1. _上下文_ 用于向模型解释GPT Action在做的事情 -2. _说明_ 关于步骤顺序——这是你引用Action名称以及API调用需要注意的任何参数的地方 -3. _附加说明_ 如果有任何需要记住的内容 +1. _上下文_ 用于向模型解释该 GPT 操作正在做什么 +2. _操作说明_ 关于步骤顺序 —— 这是你引用操作名称以及 API 调用需要注意的任何参数的地方 +3. _附加备注_ 如果有任何需要记住的事项 -以下是 Weather GPT 的指令示例。请注意指令如何引用 Open API 模式中的 API 动作名称和 json 参数。 +下面是 Weather GPT 的指令示例。请注意,这些指令引用了来自 Open API schema 中的 API action 名称和 json 参数。 ``` **Context**: A user needs information related to a weather forecast of a specific location. @@ -227,21 +227,21 @@ info: -### 测试 GPT 操作 +### 测试 GPT Action -在每个操作旁边,你会看到一个 **测试** 按钮。为每个操作点击它。在测试中,你可以看到每个API调用的详细输入和输出。 +每个操作旁边,你会看到 **测试** 按钮。点击每个操作的对应按钮。在测试中,你可以查看每次 API 调用的详细输入和输出。 Available actions -如果你的API调用在 Postman 等第三方工具中正常工作,但在 ChatGPT 中不行,可能有几个原因: +如果你的 API 调用在 Postman 等第三方工具中正常工作,但在 ChatGPT 中不工作,可能有以下几种原因: - ChatGPT 中的参数错误或缺失 -- ChatGPT 中的身份验证问题 -- 你的指令不完整或不明确 -- Open API 架构中的描述不明确 +- ChatGPT 中的认证问题 +- 你的指令不完整或不清晰 +- Open API schema 中的描述不清晰 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -GPT Actions 存储于 [Custom GPTs](https://openai.com/blog/introducing-gpts),中,它们通过提供指令、附加文档作为知识,并连接第三方服务,使用户能够针对特定用例定制 ChatGPT。 +GPT Actions 存储在 [自定义 GPT](https://openai.com/blog/introducing-gpts),中,它允许用户通过提供指令、将文档作为知识附件以及连接第三方服务,将 ChatGPT 定制为特定用例。 -GPT Actions 使 ChatGPT 用户能够直接在 ChatGPT 之外,通过自然语言与外部应用进行 RESTful API 调用交互。它们将自然语言文本转换为 API 调用所需的 json schema。GPT Actions 通常用于向 [数据检索](https://developers.openai.com/api/docs/actions/data-retrieval) ChatGPT(例如查询数据仓库)或在另一个应用中执行操作(例如提交 JIRA 工单)。 +GPT Actions 使 ChatGPT 用户能够在 ChatGPT 之外,通过自然语言与外部应用进行基于 RESTful API 调用的交互。它们将自然语言文本转换为进行 API 调用所需的 JSON schema。GPT Actions 通常用于执行 [数据检索](https://developers.openai.com/api/docs/actions/data-retrieval) (例如查询数据仓库),或在另一个应用中执行操作(例如提交一个 JIRA 工单)。 ## GPT Actions 的工作原理 -本质上,GPT Actions 利用 [函数调用](https://developers.openai.com/api/docs/guides/function-calling) 来执行 API 调用。 +GPT Actions 的核心是利用 [Function Calling](https://developers.openai.com/api/docs/guides/function-calling) 来执行 API 调用。 -类似于 ChatGPT 的数据分析功能(该功能会生成 Python 代码并执行),GPT Actions 利用函数调用来:(1) 确定哪个 API 调用与用户的问题相关,以及 (2) 生成该 API 调用所需的 json 输入。最后,GPT Action 使用该 json 输入执行 API 调用。 +与 ChatGPT 的 Data Analysis 功能(它会生成 Python 代码并执行)类似,它们利用 Function Calling 来(1)确定哪个 API 调用与用户的问题相关,以及(2)生成该 API 调用所需的 json 输入。最后,GPT Action 使用该 json 输入执行 API 调用。 -开发者甚至可以指定操作的认证机制,自定义 GPT 将使用第三方应用的认证来执行 API 调用。GPT Actions 对最终用户隐藏了 API 调用的复杂性:用户仅需用自然语言提问,ChatGPT 也会以自然语言提供输出。 +开发者甚至可以指定某个 action 的身份验证机制,Custom GPT 将使用第三方应用的认证来执行该 API 调用。GPT Actions 向最终用户隐藏了 API 调用的复杂性:用户只需用自然语言提问,ChatGPT 也会用自然语言返回结果。 -## GPT Actions 的强大功能 +## GPT Actions 的强大之处 -API 允许 **互操作性** ,以使你的组织能够访问其他应用程序。然而,允许用户访问第三方 API 中的正确信息可能需要开发人员付出大量额外工作。 +API 允许 **实现互操作,以便你的组织能够访问其他应用。然而,让用户从第三方 API 中获取正确信息可能会给开发者带来大量额外工作。** to enable your organization to access other applications. However, enabling users to access the right information from 3rd-party 接口s can require significant overhead from developers. -GPT Actions 提供了一种可行的替代方案:开发人员现在只需描述一次 API 调用的架构,配置认证,并向 GPT 添加一些指令,ChatGPT 就能在用户的自然语言问题与 API 层之间架起桥梁。 +GPT Actions 提供了一个可行的替代方案:开发者现在只需描述一次 API 调用的模式(schema),配置好身份验证,并向 GPT 提供一些指令,ChatGPT 就会在用户的自然语言问题与 API 层之间架起桥梁。 ## 简化示例 -《 [入门指南](https://developers.openai.com/api/docs/actions/getting-started) 》通过使用两次 API 调用的示例,来演示如何从 [weather.gov](https://developers.openai.com/api/docs/actions/weather.gov) 生成天气预报: +该 [入门指南](https://developers.openai.com/api/docs/actions/getting-started) 通过来自的两次 API 调用演示一个示例 [weather.gov](https://developers.openai.com/api/docs/actions/weather.gov) 以生成天气预报: -- /points/\{latitude},\{longitude} 输入纬度-经度坐标,输出预报办公室(wfo)和 x-y 坐标 -- /gridpoints/\{office}/\{gridX},\{gridY}/forecast 输入 wfo、x、y 坐标,输出预报 +- /points/\{latitude},\{longitude} 输入经纬度坐标,并输出预报办公室 (wfo) 以及 x-y 坐标 +- /gridpoints/\{office}/\{gridX},\{gridY}/forecast 输入 wfo,x,y 坐标,并输出预报结果 -一旦开发者将填充这两个 API 调用所需的 json schema 编码到 GPT Action 中,用户只需询问"这个周末去华盛顿特区应该打包什么?" GPT Action 便会自动计算该地点的经纬度,依次执行这两个 API 调用,并根据返回的周末天气预报提供打包清单。 +一旦开发者把填充这两个 API 调用所需的 json schema 编码到 GPT Action 中,用户就可以直接问"我这个周末去华盛顿特区旅行该带什么?"。GPT Action 会自动获取该地点的经纬度,按顺序执行这两个 API 调用,并根据返回的周末天气情况给出打包清单。 -在此示例中,GPT Actions 将向 api.weather.gov 提供两个 API 输入: +在这个示例中,GPT Actions 会向 api.weather.gov 提供两个 API 输入: /points API 调用: @@ -52,10 +52,10 @@ GPT Actions 提供了一种可行的替代方案:开发人员现在只需描 ## 开始构建 -请查看 [入门指南](https://developers.openai.com/api/docs/actions/getting-started) 以深入了解此天气示例及我们的 [操作库](https://developers.openai.com/api/docs/actions/actions-library) ,其中包含针对最常见第三方应用的预构建示例 GPT 操作。 +查看 [入门指南](https://developers.openai.com/api/docs/actions/getting-started) ,深入了解这个天气示例以及我们的 [actions 库](https://developers.openai.com/api/docs/actions/actions-library) ,其中包含最常见的第三方应用的预构建 GPT Actions 示例。 -## 补充信息 +## 其他信息 -- 熟悉我们的 [GPT 政策](https://openai.com/policies/usage-policies#:~:text=or%20educational%20purposes.-,Building%20with%20ChatGPT,-Shared%20GPTs%20allow) +- 请先了解我们的 [GPT 政策](https://openai.com/policies/usage-policies#:~:text=or%20educational%20purposes.-,Building%20with%20ChatGPT,-Shared%20GPTs%20allow) - 查看 [GPT 数据隐私常见问题解答](https://help.openai.com/en/articles/8554402-gpts-data-privacy-faqs) -- 查找 [常见 GPT 问题的答案](https://help.openai.com/en/articles/8554407-gpts-faq) \ No newline at end of file +- 查找 [常见 GPT 问题](https://help.openai.com/en/articles/8554407-gpts-faq) \ No newline at end of file diff --git a/docs/zh/api/docs/actions/production.md b/docs/zh/api/docs/actions/production.md index 8752db3..af04140 100644 --- a/docs/zh/api/docs/actions/production.md +++ b/docs/zh/api/docs/actions/production.md @@ -1,51 +1,51 @@ -# GPT Actions 生产注意事项 +# 关于 GPT Actions 的生产环境注意事项 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾附加 `.md` 来获取文档页面的 Markdown 版本。 -## 速率限制 +## Rate limits -考虑对你公开的 API 端点实现速率限制。ChatGPT 会遵循 429 响应码,并在短时间内收到一定数量的 429 或 500 后,动态地退避对你的操作发送请求。 +考虑在你暴露的 API 端点上实施速率限制。ChatGPT 会遵循 429 响应码,并在短时间内收到一定数量的 429 或 500 响应后动态降低向你 action 发送请求的频率。 ## 超时 -在操作体验期间进行API调用时,如果超出以下阈值,将发生超时: +在 actions 体验过程中进行 API 调用时,如果超过以下阈值,将会发生超时: -- API 调用的 45 秒往返时间 +- API 调用往返耗时 45 秒 ## 使用 TLS 和 HTTPS -指向你的 action 的所有流量都必须使用 TLS 1.2 或更高版本,并通过端口 443 携带有效的公共证书。 +发往你 action 的所有流量必须在 443 端口上使用 TLS 1.2 或更高版本,并附带有效的公共证书。 -## IP 出口范围 +## IP egress ranges -ChatGPT 将从以下 [已发布的 IP 范围](https://developers.openai.com/api/docs/guides/ip-addresses)。中调用你的操作。你可能希望明确将这些 IP 地址加入白名单。 +ChatGPT 将从其中一个 [已发布的 IP 段](https://developers.openai.com/api/docs/guides/ip-addresses)。调用你的 action。你可能希望显式地将这些 IP 地址加入白名单。 -## 多种身份验证方案 +## 多种身份验证模式 -定义操作时,你可以混合使用单一认证类型(OAuth 或 API 密钥)以及不需要认证的端点。 +在定义 action 时,你可以将单一认证类型(OAuth 或 API key)与不需要认证的 endpoints 混合使用。 -你可以在我们的 [操作认证页面](https://developers.openai.com/api/docs/actions/authentication). +你可以在我们的 [actions 认证页面](https://developers.openai.com/api/docs/actions/authentication). ## Open API 规范限制 -在你的 OpenAPI 规范中请记住以下限制,这些限制可能会发生变化: +请牢记你的 OpenAPI 规范中存在以下限制,且这些限制可能随时变更: - API 规范中每个 API 端点描述/摘要字段最多 300 个字符 - API 规范中每个 API 参数描述字段最多 700 个字符 ## 其他限制 -使用操作构建时,有几个限制需要注意: +在使用操作构建时,需要注意以下几个限制: -- 不支持自定义标头 -- 除 Google、Microsoft 和 Adobe 的 OAuth 域外,OAuth 流程中使用的所有域必须与主要端点使用的域相同 -- 请求和响应负载各自必须少于 100,000 个字符 +- 不支持自定义请求头 +- 除 Google、Microsoft 和 Adobe 的 OAuth 域名外,OAuth 流程中使用的所有域名都必须与主端点所使用的域名一致 +- 请求和响应负载每个不得超过 100,000 个字符 - 请求在 45 秒后超时 -- 请求和响应只能包含文本(不支持图像或视频) +- 请求和响应只能包含文本(不能包含图片或视频) -## 后果标志 +## Consequential flag -在 OpenAPI 规范中,你现在可以将某些端点设置为“有后果的”,如下所示: +在 OpenAPI 规范中,你现可将某些端点设置为 "consequential",如下所示: ```yaml paths: @@ -60,48 +60,48 @@ paths: x-openai-isConsequential: true ``` -一个有后果的操作的好例子是代表用户预订酒店房间并为其付费。 +一个典型的“重要操作”示例是代用户预订酒店房间并完成支付。 -- 如果 `x-openai-isConsequential` 字段为 `true`,ChatGPT 会将操作视为“运行前必须始终提示用户确认”,并且不显示“始终允许”按钮(这两者都是 GPT 的设计特性,旨在让构建者和用户对操作有更多控制)。 -- 如果 `x-openai-isConsequential` 字段为 `false`,ChatGPT 会显示“始终允许”按钮。 -- 如果该字段不存在,ChatGPT 默认所有 GET 操作为 `false` ,所有其他操作为 `true` +- 如果该 `x-openai-isConsequential` 字段为 `true`,ChatGPT 会将该操作视为“运行前必须始终提示用户确认”,并且不显示“始终允许”按钮(这两项功能是 GPT 设计的,旨在让开发者和用户对操作有更多控制权)。 +- 如果该 `x-openai-isConsequential` 字段为 `false`,ChatGPT 会显示“始终允许”按钮。 +- 如果该字段不存在,ChatGPT 会将所有 GET 操作默认为 `false` ,将其余所有操作默认为 `true` ## 提供示例的最佳实践 -在编写 GPT 指令和 schema 中的描述,以及设计你的 API 响应时,请遵循以下最佳实践: +以下是编写 schema 中的 GPT 指令和描述,以及设计你的 API 响应时可以遵循的一些最佳实践: -1. 你的描述不应鼓励 GPT 在用户未请求你所提供服务的特定类别时使用该操作。 +1. 你的描述不应在用户未请求该动作所属服务类别时,鼓励 GPT 使用该动作。 - _不佳示例_: + _错误示例_: - > 每当用户提到任何类型的任务时,询问他们是否想使用 TODO 操作向待办列表添加内容。 + > 每当用户提到任何类型的任务时,询问他们是否希望使用 TODO 动作向其待办列表中添加内容。 - _良好示例_: + _正确示例_: - > TODO 列表可以添加、删除和查看用户的待办事项。 + > TODO 列表可以添加、删除和查看用户的 TODO。 -2. 你的描述不应为 GPT 使用操作规定特定触发条件。ChatGPT 被设计为在适当时自动使用你的操作。 +2. 你的描述不应为 GPT 规定使用该动作的具体触发条件。ChatGPT 旨在在适当时自动使用你的动作。 - _不佳示例_: + _错误示例_: - > 当用户提到任务时,回复“您希望我将其添加到您的 TODO 列表中吗?请回复‘yes’以继续。” + > 当用户提到某项任务时,回复"是否需要我将其添加到你的 TODO 列表中?回复'是'以继续。" - _良好示例_: + _正确示例_: - > [此处无需说明] + > [无需提供说明] -3. 除非必要,否则来自 API 的操作响应应返回原始数据,而不是自然语言响应。GPT 将使用返回的数据提供自己的自然语言响应。 +3. API 的动作响应应返回原始数据,而非自然语言回复,除非确有需要。GPT 会使用返回的数据自行生成自然语言回复。 - _不佳示例_: + _错误示例_: - > 我找到了你的待办列表!你有 2 个待办事项:购买杂货和遛狗。如果你愿意,我可以添加更多待办事项! + > 我已找到你的待办列表!你有 2 项待办:买菜和遛狗。如果需要,我可以为你添加更多待办! - _良好示例_: + _正确示例_: > \{ "todos": [ "get groceries", "walk the dog" ] } -## GPT 操作数据的使用方式 +## GPT Action 数据的使用方式 -GPT 操作将 ChatGPT 连接到外部应用。如果用户与 GPT 的自定义操作交互,ChatGPT 可能会将对话的某些部分发送到该操作的端点。 +GPT Actions 可将 ChatGPT 连接到外部应用。如果用户使用了某个 GPT 的自定义 Action,ChatGPT 可能会将其对话中的部分内容发送到该 Action 的端点。 -如果你有疑问或遇到其他限制,可以加入 [OpenAI 开发者论坛](https://community.openai.com). \ No newline at end of file +如果你有疑问或遇到其他限制,可以在 [OpenAI 开发者论坛](https://community.openai.com). \ No newline at end of file diff --git a/docs/zh/api/docs/actions/sending-files.md b/docs/zh/api/docs/actions/sending-files.md index aee94a9..b2a1a0b 100644 --- a/docs/zh/api/docs/actions/sending-files.md +++ b/docs/zh/api/docs/actions/sending-files.md @@ -1,21 +1,21 @@ # 使用 GPT Actions 发送和返回文件 -> 完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参见 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,可在页面 URL 末尾追加 `.md` 来获取。 ## 发送文件 -POST 请求最多可包含来自对话的十个文件(包括 DALL-E 生成的图像)。它们将以 URL 形式发送,且有效期为五分钟。 +POST 请求可以包含来自对话的最多十个文件(包括 DALL-E 生成的图像)。它们将以 URL 的形式发送,这些 URL 在五分钟内有效。 -要使文件成为 POST 请求的一部分,参数必须命名为 `openaiFileIdRefs` 并且描述应告知模型你的 API 期望接收的文件的类型和数量。 +要使文件成为你 POST 请求的一部分,参数必须命名为 `openaiFileIdRefs` ,并且描述应向模型说明你的 API 期望的文件类型和数量。 -该 `openaiFileIdRefs` 参数将填充为一个 JSON 对象数组。每个对象包含: +该 `openaiFileIdRefs` 参数将被填充为一个 JSON 对象数组。每个对象包含: -- `name` 文件的名称。由 DALL-E 创建时,这将是一个自动生成的名称。 +- `name` 文件的名称。由 DALL-E 创建时将自动生成该名称。 - `id` 文件的稳定标识符。 -- `mime_type` 文件的 MIME 类型。对于用户上传的文件,这基于文件扩展名。 +- `mime_type` 文件的 MIME 类型。对于用户上传的文件,该类型基于文件扩展名确定。 - `download_link` 用于获取文件的 URL,有效期为五分钟。 -以下是一个 `openaiFileIdRefs` 包含两个元素的数组示例: +下面是一个 `openaiFileIdRefs` 包含两个元素的数组: ```json [ @@ -34,7 +34,7 @@ POST 请求最多可包含来自对话的十个文件(包括 DALL-E 生成的 ] ``` -操作可以包括用户上传的文件、DALL-E 生成的图像,以及 Code Interpreter 创建的文件。 +Actions 可以包括用户上传的文件、由 DALL-E 生成的图像,以及由 Code Interpreter 创建的文件。 ### OpenAPI 示例 @@ -57,25 +57,25 @@ POST 请求最多可包含来自对话的十个文件(包括 DALL-E 生成的 type: string ``` -虽然此架构将 `openaiFileIdRefs` 显示为类型为 `string`,的数组,但在运行时,这将如前所示填充为 JSON 对象的数组。 +虽然此架构显示 `openaiFileIdRefs` 为一个数组,类型为 `string`,但在运行时,它将填充为前面所示的 JSON 对象数组。 ## 返回文件 -请求最多可返回 10 个文件。每个文件最大可为 10 MB,且不能是图片或视频。 +单个请求最多可返回 10 个文件。每个文件最大 10 MB,且不能是图片或视频。 -这些文件将像用户上传的文件一样成为对话的一部分,这意味着它们可能可供代码解释器、文件搜索使用,并作为后续操作调用的一部分发送。在 Web 应用中,用户将看到文件已被返回,并可以下载它们。 +这些文件将像用户上传的一样成为对话的一部分,意味着它们可能会被提供给代码解释器、文件搜索,并在后续的操作调用中一并发送。在网页应用中,用户会看到这些文件已被返回,并可以下载它们。 -要返回文件,响应的正文必须包含一个 `openaiFileResponse` 参数。此参数必须始终是一个数组,且必须以两种方式之一进行填充。 +要返回文件,响应体必须包含一个 `openaiFileResponse` 参数。此参数必须始终是数组,并且必须以下面两种方式之一填充。 -### 行内选项 +### 内联选项 -数组中的每个元素都是一个 JSON 对象,其中包含: +数组的每个元素都是一个 JSON 对象,包含: -- `name` 文件名。这将向用户可见。 -- `mime_type` 文件的 MIME 类型。这用于确定资格以及哪些功能可以访问该文件。 +- `name` 文件的名称。用户可以看到此名称。 +- `mime_type` 文件的 MIME 类型。用于确定文件是否符合使用条件以及哪些功能可以访问该文件。 - `content` 文件的 base64 编码内容。 -以下是一个包含两个元素的 openaiFileResponse 数组示例: +下面是一个包含两个元素的 openaiFileResponse 数组示例: ```json [ @@ -132,13 +132,13 @@ OpenAPI 示例 description: The content of the file in base64 encoding. ``` -### URL 选项 +### URL option -数组中的每个元素都是一个 URL,指向要下载的文件。请求头 `Content-Disposition` 以及 `Content-Type` 必须进行设置,以便能够确定文件名和 MIME 类型。文件名将对用户可见。文件的 MIME 类型决定了其资格以及哪些功能可以访问该文件。 +数组的每个元素都是一个 URL,引用要下载的文件。请求头 `Content-Disposition` 和 `Content-Type` 必须设置为可以确定文件名和 MIME 类型的值。文件名对用户可见。文件的 MIME 类型决定其资格以及哪些功能可以访问该文件。 -获取每个文件有 10 秒的超时时间。 +每个文件的获取有 10 秒的超时限制。 -以下是一个包含两个元素的 `openaiFileResponse` 数组示例: +下面是一个 `openaiFileResponse` 包含两个元素的数组: ```json [ @@ -147,7 +147,7 @@ OpenAPI 示例 ] ``` -以下是为每个 URL 所需的请求头示例: +以下是每个 URL 所需请求头的示例: ``` Content-Type: application/pdf diff --git a/docs/zh/api/docs/assistants/migration.md b/docs/zh/api/docs/assistants/migration.md index ad11253..5fc53bd 100644 --- a/docs/zh/api/docs/assistants/migration.md +++ b/docs/zh/api/docs/assistants/migration.md @@ -1,17 +1,17 @@ # Assistants 迁移指南 -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -在 Responses API 实现功能对齐后,我们已弃用 Assistants API。它将于 2026 年 8 月 26 日关闭。请遵循 [迁移指南](https://developers.openai.com/platform/assistants/migration) 更新你的集成。 [了解更多](https://platform.openai.com/docs/guides/migrate-to-responses). +在 Responses API 实现功能对等之后,我们已弃用 Assistants API。它将于 2026 年 8 月 26 日停用。请参阅 [迁移指南](https://developers.openai.com/platform/assistants/migration) 以更新你的集成。 [了解更多](https://platform.openai.com/docs/guides/migrate-to-responses). -我们正在从 Assistants API 迁移到新的 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses) ,以获得更简单、更灵活的思维模型。 +我们正在从 Assistants API 迁移到全新的 [Responses API](https://developers.openai.com/api/docs/guides/migrate-to-responses) ,以获得更简洁、更灵活的心智模型。 -响应更简单——发送输入项并取回输出项。使用 Responses API,你还能获得更好的性能和新功能,例如 [深度研究](https://developers.openai.com/api/docs/guides/deep-research), [MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp),以及 [计算机使用](https://developers.openai.com/api/docs/guides/tools-computer-use)。这一变更还让你可以管理对话,而无需来回传递 `previous_response_id`. +Responses 更简单——发送输入项即可获得输出项。使用 Responses API,你还可以获得更好的性能以及全新功能,例如 [深度研究](https://developers.openai.com/api/docs/guides/deep-research), [MCP](https://developers.openai.com/api/docs/guides/tools-connectors-mcp),以及 [计算机使用](https://developers.openai.com/api/docs/guides/tools-computer-use)。此次变更还让你能够管理对话,而无需回传 `previous_response_id`. -### 有什么变化? +### 发生了什么变化? @@ -53,31 +53,31 @@
-## 从助手到提示词 +## 从 assistants 到 prompts -助手曾是持久的 API 对象,捆绑了模型选择、指令和工具声明——完全通过 API 创建和管理。其替代品提示词只能在仪表板中创建,你可以在开发产品时对它们进行版本管理。 +Assistants 是持久的 API 对象,将模型选择、指令和工具声明捆绑在一起——完全通过 API 创建和管理。作为其替代品的 prompts 只能在仪表板中创建,你可以在仪表板中随着产品开发对它们进行版本管理。 -### 为什么这很有帮助 +### 为什么这很有用 -- **可移植性与版本管理**:你可以对提示词规格进行快照、审查、差异比较和回滚。你也可以对提示词进行版本管理,这样你的代码只需指向最新版本。 -- **关注点分离**:你的应用代码现在负责编排(历史记录修剪、工具循环、重试),而你的提示词则专注于高级行为和约束(系统指导、工具可用性、结构化输出模式、温度默认值)。 -- **实时兼容性**:当你通过 Realtime API 连接时,可以重用相同的提示词配置,这样在聊天、流式传输和低延迟交互会话中就有了统一的行为定义。 -- **工具与输出一致性**:使用提示词,你启动的每个 Responses 或 Realtime 会话都会继承一致的契约,因为提示词封装了工具模式和结构化输出期望。 +- **可移植性与版本管理**:你可以对提示词规范进行快照、审查、差异比较和回滚。你还可以对提示词进行版本管理,这样你的代码只需指向最新版本即可。 +- **关注点分离**:你的应用代码现在负责编排(历史裁剪、工具循环、重试),而你的提示词则专注于高层行为与约束(系统指引、工具可用性、结构化输出 schema、温度默认值)。 +- **Realtime 兼容性**:当你通过 Realtime API 连接时,可以复用同一份提示词配置,从而在聊天、流式传输和低延迟交互会话中获得统一的行为定义。 +- **工具与输出一致性**:使用提示词后,你启动的每一个 Responses 或 Realtime 会话都会继承一致的契约,因为提示词封装了工具 schema 和结构化输出预期。 -### 实际的迁移步骤 +### 实用的迁移步骤 -1. 识别每个现有助手的 _指令 + 工具_ 捆绑包。 -2. 在仪表盘中,将该捆绑包重新创建为命名提示词。 -3. 将提示词 ID(或其导出的规范)存储在源代码管理中,以便应用程序代码可以引用稳定标识符。 -4. 在发布期间,通过交换提示词 ID 进行 A/B 测试——无需以编程方式创建或删除助手对象。 +1. 识别每个现有 Assistant 的 _instruction + tool_ bundle。 +2. 在仪表板中,将该 bundle 重新创建为一个命名的 prompt。 +3. 将 prompt ID(或其导出的规范)存放在源代码管理中,以便应用程序代码可以引用稳定的标识符。 +4. 在 rollout 期间,通过交换 prompt ID 来运行 A/B 测试——无需以编程方式创建或删除 assistant 对象。 -将提示词视为一个可插拔的 **版本化行为配置** ,用于接入 Responses 或 Realtime API。 +把提示词当作一个 **可版本化的行为配置** ,插入到 Responses 或 Realtime API 中。 --- -## 从线程到对话 +## 从对话线到会话 -线程是服务端存储的消息集合。线程只能 _存储_ 消息。会话存储条目,条目可包含消息、工具调用、工具输出及其他数据。 +线程是存储在服务端的消息集合。线程只能 _存储消息。_ 对话存储的是条目(item),其中可以包含消息、工具调用、工具输出以及其他数据。 ### 请求示例 @@ -103,7 +103,7 @@ } ``` -#### Conversation 对象 +#### 对话对象 ```json { @@ -120,11 +120,11 @@ --- -## 从运行到响应 +## 从 runs 到 responses -Runs 是针对线程执行的异步过程。请参见下面的示例。Responses 更简单:提供一组要执行的输入项,并返回输出项列表。 +Runs 是针对线程执行的异步进程。参见下面的示例。Responses 更简单:提供一组输入项来执行,然后返回一组输出项。 -Responses 设计为可单独使用,但你也可以将其与提示(prompt)和对话(conversation)对象一起使用,以存储上下文和配置。 +Responses 被设计为可以单独使用,但你也可以将其与 prompt 和 conversation 对象一起使用,以存储上下文和配置。 ### 请求示例 @@ -136,7 +136,7 @@ Responses 设计为可单独使用,但你也可以将其与提示(prompt) -#### 运行对象 +#### Run 对象 ```json { @@ -185,7 +185,7 @@ Responses 设计为可单独使用,但你也可以将其与提示(prompt) } ``` -#### 响应对象 +#### Response 对象 ```json { @@ -261,25 +261,25 @@ Responses 设计为可单独使用,但你也可以将其与提示(prompt) ## 迁移你的集成 -按照下面的迁移步骤,从 Assistants API 迁移到 Responses API,同时不丢失任何功能支持。 +按照下面的迁移步骤从 Assistants API 迁移到 Responses API,同时不会丢失任何功能支持。 -### 1. 根据你的智能体创建提示词 +### 1. 基于你的助手创建提示词 -1. 识别你的应用程序中最重要的助手对象。 -1. 在仪表板中找到这些对象,然后点击 `Create prompt`. +1. 识别你的应用中最主要的智能体对象。 +1. 在仪表板中找到它们并点击 `Create prompt`. -这将根据每个现有的助手对象创建一个提示词对象。 +这会基于每个现有的助手对象创建一个提示对象。 -可复用的提示词对象也正在被弃用。如果你使用此迁移 - 路径,请查看 [提示词弃用 - 时间线](https://developers.openai.com/api/docs/deprecations#2026-06-03-reusable-prompts) 在采用 - 长期集成中的提示词对象之前。 +可复用的提示对象也正在被弃用。如果你使用此迁移 + 路径,请查看 [提示弃用 + 时间表](https://developers.openai.com/api/docs/deprecations#2026-06-03-reusable-prompts) 后再将 + 提示对象用于长期集成中。 -### 2. 将新用户聊天迁移到对话和响应 +### 2. 将新的用户聊天迁移到 conversations 和 responses -我们不会提供将线程迁移到对话的自动化工具。相反,我们建议将新的用户线程迁移到对话中,并在必要时迁移较旧的线程。 +我们不会提供将 Threads 迁移到 Conversations 的自动化工具。相反,我们建议将新的用户线程迁移到 conversations 上,并根据需要迁移较旧的线程。 -以下是一个你可能如何回填线程的示例: +以下是一个示例,演示你可能如何回填一个线程: ```python import os @@ -357,15 +357,15 @@ puts(conversation.id) ``` -## 比较完整示例 +## 对比完整示例 -以下是一些同时使用 Assistants API 和 Responses API 的集成示例,以便你了解它们的对比情况。 +下面是一些同时使用 Assistants API 和 Responses API 的集成示例,便于你对比两者的差异。 ### 用户聊天应用 -助手 API +Assistants API ```python threads_by_session: dict[str, str] = {} diff --git a/docs/zh/api/docs/assistants/tools.md b/docs/zh/api/docs/assistants/tools.md index 31e978d..f95333c 100644 --- a/docs/zh/api/docs/assistants/tools.md +++ b/docs/zh/api/docs/assistants/tools.md @@ -1,13 +1,13 @@ -# 助手 API 工具 +# Assistants API 工具 -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -在 Responses API 实现特性对等后,我们已弃用 Assistants API。它将于 2026 年 8 月 26 日关闭。请遵循 [迁移指南](https://developers.openai.com/platform/assistants/migration) 以更新你的集成。 [了解更多](https://platform.openai.com/docs/guides/migrate-to-responses). +在 Responses API 实现功能对等后,我们已弃用 Assistants API。它将于 2026-08-26 停止服务。请参阅 [迁移指南](https://developers.openai.com/platform/assistants/migration) 以更新你的集成。 [了解更多信息](https://platform.openai.com/docs/guides/migrate-to-responses). ## 概述 -使用 Assistants API 创建的智能体可以配备工具,使它们能够执行更复杂的任务或与你的应用程序交互。 -我们为智能体提供内置工具,但你也可以使用 Function Calling 定义自己的工具来扩展其能力。 +使用 Assistants API 创建的智能体可以配备工具,从而执行更复杂的任务或与你的应用交互。 +我们为智能体提供了内置工具,但你也可以使用 Function Calling 定义自己的工具来扩展它们的能力。 Assistants API 目前支持以下工具: @@ -22,7 +22,7 @@ Assistants API 目前支持以下工具: -代码解释器 +Code Interpreter @@ -31,7 +31,7 @@ Assistants API 目前支持以下工具: -函数调用 +Function Calling diff --git a/docs/zh/api/docs/bots.md b/docs/zh/api/docs/bots.md index b8dfb29..8c6a85e 100644 --- a/docs/zh/api/docs/bots.md +++ b/docs/zh/api/docs/bots.md @@ -1,8 +1,8 @@ -# OpenAI 爬虫概述 +# OpenAI 爬虫概览 -> 关于完整的文档索引,请参阅 [llms.txt](/llms.txt)。通过向页面 URL 追加 `.md` 即可获取文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 获取文档页面的 Markdown 版本。 -OpenAI 使用网络爬虫(“robots”)和用户代理来为其产品执行操作,无论是自动执行还是由用户请求触发。OpenAI 使用 OAI-SearchBot 和 GPTBot robots.txt 标签,使网站管理员能够管理其网站和内容如何与 AI 协作。各项设置彼此独立——例如,网站管理员可以允许 OAI-SearchBot 以出现在搜索结果中,同时禁止 GPTBot 以表明爬取的内容不应被用于训练 OpenAI 的生成式 AI 基础模型。如果你的网站允许了这两个爬虫,我们可能会仅使用一次爬取的结果来用于两种用例,以避免重复爬取。就搜索结果而言,请注意我们的系统在网站 robots.txt 更新后大约需要 24 小时才能进行调整。 +OpenAI 使用网络爬虫(“robots”)和用户代理来为其产品执行操作,这些操作可以是自动触发的,也可以由用户请求触发。OpenAI 使用 OAI-SearchBot 和 GPTBot 的 robots.txt 标签,使网站管理员能够管理其站点和内容与 AI 的协作方式。每个设置都是相互独立的——例如,网站管理员可以允许 OAI-SearchBot 以便出现在搜索结果中,同时禁止 GPTBot,以表明抓取的内容不应被用于训练 OpenAI 的生成式 AI 基础模型。如果你的站点同时允许这两个爬虫,我们可能会仅使用一次抓取的结果来同时满足两种用途,以避免重复抓取。关于搜索结果,请注意,从站点的 robots.txt 更新到我们的系统完成调整可能需要大约 24 小时。 @@ -12,23 +12,23 @@ OpenAI 使用网络爬虫(“robots”)和用户代理来为其产品执行 示例用户代理字符串(版本号可能会变化): `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot` -在获取 robots.txt 文件时,我们可能使用带有额外 `robots.txt` 标记的用户代理字符串。该标记有助于网站所有者更轻松地将获取 robots.txt 文件的请求与其他资源的请求区分开来,尤其是在他们的日志不包含路径时: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; robots.txt; +https://openai.com/searchbot` +在获取 robots.txt 文件时,我们可能会使用带有额外 `robots.txt` 标记的用户代理字符串。该标记有助于站点所有者更轻松地区分对 robots.txt 文件的请求和对其他资源的请求,尤其是在日志中不包含路径的情况下: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; robots.txt; +https://openai.com/searchbot` 已发布的 IP 地址: https://openai.com/searchbot.json - | OAI-AdsBot | OAI-AdsBot 用于验证在 ChatGPT 上作为广告提交的网页的安全性。当你提交广告时,OpenAI 可能会访问落地页以确保其符合我们的政策。我们还可能使用落地页的内容来确定何时向用户展示广告最为相关。OAI-AdsBot 仅访问作为广告提交的页面,且 OAI-AdsBot 收集的数据不用于训练生成式 AI 基础模型。 + | OAI-AdsBot | OAI-AdsBot 用于验证作为广告在 ChatGPT 上提交的网页的安全性。当你提交广告时,OpenAI 可能会访问着陆页以确保其符合我们的政策。我们也可能使用着陆页中的内容来确定何时向用户展示该广告最为相关。OAI-AdsBot 仅访问作为广告提交的页面,且 OAI-AdsBot 收集的数据不用于训练生成式 AI 基础模型。 -完整用户代理字符串: `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-AdsBot/1.0; +https://openai.com/adsbot` +完整的用户代理字符串: `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-AdsBot/1.0; +https://openai.com/adsbot` 已发布的 IP 地址: https://openai.com/adsbot.json - | GPTBot | GPTBot 用于使我们的生成式 AI 基础模型更有用、更安全。它用于爬取可能用于训练我们的生成式 AI 基础模型的内容。禁止 GPTBot 表示网站内容不应被用于训练生成式 AI 基础模型。 + | GPTBot | GPTBot 用于让我们的生成式 AI 基础模型更加有用和安全。它用于抓取可能用于训练我们的生成式 AI 基础模型的内容。禁止 GPTBot 表示站点的内容不应被用于训练生成式 AI 基础模型。 示例用户代理字符串(版本号可能会变化): `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot` -在获取 robots.txt 文件时,我们可能会在用户代理字符串中添加 `robots.txt` 标记,以帮助网站所有者将这些请求与其他资源的请求区分开来,尤其是在日志不包含路径的情况下。 +在获取 robots.txt 文件时,我们可能会向用户代理字符串添加一个 `robots.txt` 标记,以帮助站点所有者区分这些请求和对其他资源的请求,尤其是在日志中不包含路径的情况下。 已发布的 IP 地址: https://openai.com/gptbot.json - | ChatGPT-User | OpenAI 还在 ChatGPT 和 [自定义 GPT](https://openai.com/index/introducing-gpts/)。中将 ChatGPT-User 用于某些用户操作。当用户向 ChatGPT 或自定义 GPT 提问时,它可能会使用 ChatGPT-User 代理访问网页。ChatGPT 用户还可能通过 [GPT Actions](https://developers.openai.com/api/docs/actions/introduction)。与外部应用进行交互。ChatGPT-User 不用于以自动方式爬取网页。由于这些操作由用户发起,robots.txt 规则可能不适用。ChatGPT-User 不用于确定内容是否可能出现在搜索中。请在 robots.txt 中使用 OAI-SearchBot 来管理搜索退出和自动爬取。 + | ChatGPT-User | OpenAI 也在 ChatGPT 中的某些用户操作中使用 ChatGPT-User,以及 [自定义 GPT](https://openai.com/index/introducing-gpts/)。当用户向 ChatGPT 或自定义 GPT 提问时,它可能会使用 ChatGPT-User 代理访问网页。ChatGPT 用户还可以通过 [GPT 操作](https://developers.openai.com/api/docs/actions/introduction)。与外部应用进行交互。ChatGPT-User 不用于以自动方式抓取网页。由于这些操作是由用户发起的,robots.txt 规则可能不适用。ChatGPT-User 不用于确定内容是否可以出现在搜索结果中。请在 robots.txt 中使用 OAI-SearchBot 来管理搜索退出和自动抓取。 -完整用户代理字符串: `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot` +完整的用户代理字符串: `Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot` 已发布的 IP 地址: https://openai.com/chatgpt-user.json \ No newline at end of file diff --git a/docs/zh/api/docs/concepts.md b/docs/zh/api/docs/concepts.md index 18805a9..d9fe246 100644 --- a/docs/zh/api/docs/concepts.md +++ b/docs/zh/api/docs/concepts.md @@ -1,21 +1,21 @@ # 关键概念 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt). 在页面 URL 末尾附加 `.md` 即可获取文档页面的 Markdown 版本。 -在 OpenAI,保护用户数据是我们使命的根本。我们不会使用通过 API 的输入和输出 - 来训练我们的模型。在我们的 +在 OpenAI,保护用户数据是我们使命的根本。我们不会通过我们的 + API 对输入和输出进行模型训练。了解更多信息,请访问我们的 [API 数据隐私页面](https://openai.com/api-data-privacy). ## 文本生成模型 -OpenAI 的文本生成模型(通常称为生成式预训练变换器或简称“GPT”模型),如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 [`gpt-5.6-terra`](https://developers.openai.com/api/docs/models/gpt-5.6-terra),经过训练可以理解自然语言和正式语言。这些模型能够根据输入生成文本输出。这些模型的输入也被称为“提示”。设计提示本质上就是你“编程”模型的方式,通常通过提供指令或一些如何成功完成任务的示例。GPT 模型可用于多种任务,包括内容或代码生成、摘要、对话、创意写作等。在我们的入门 [文本生成指南](https://developers.openai.com/api/docs/guides/text) 以及我们的 [提示工程指南](https://developers.openai.com/api/docs/guides/prompt-engineering). +OpenAI 的文本生成模型(通常称为生成式预训练变换器,简称 "GPT" 模型),例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 [`gpt-5.6-terra`](https://developers.openai.com/api/docs/models/gpt-5.6-terra),已通过训练能够理解自然语言和形式化语言。这些模型可以根据输入返回文本输出。这些模型的输入也被称为 "提示词(prompts)"。设计提示词本质上就是如何对模型进行 "编程",通常通过提供指令或一些如何成功完成任务的示例来实现。GPT 模型可广泛应用于各种任务,包括内容或代码生成、摘要、对话、创意写作等。更多内容请参阅我们的入门 [文本生成指南](https://developers.openai.com/api/docs/guides/text) 以及我们的 [提示工程指南](https://developers.openai.com/api/docs/guides/prompt-engineering). -## 嵌入 +## Embeddings -嵌入是对一段数据(例如某些文本)的向量表示,旨在保留其内容和/或含义的某些方面。在某种程度上相似的数据块,其嵌入往往比不相关数据的嵌入更接近。OpenAI提供文本嵌入模型,它们以文本字符串为输入,并以嵌入向量作为输出。嵌入可用于搜索、聚类、推荐、异常检测、分类等。更多关于嵌入的内容,请参阅我们的 [嵌入指南](https://developers.openai.com/api/docs/guides/embeddings). +嵌入(embedding)是一段数据(例如一段文本)的向量表示,旨在保留其内容和/或含义的某些方面。以某种方式相似的数据片段,其嵌入往往比不相关的数据的嵌入更为接近。OpenAI 提供文本嵌入模型,它以文本字符串作为输入,并输出一个嵌入向量。嵌入可用于搜索、聚类、推荐、异常检测、分类等场景。在我们的 [嵌入指南](https://developers.openai.com/api/docs/guides/embeddings). -## 令牌 +## Tokens -文本生成和嵌入模型将文本处理为称为 token 的块。Token 表示常见的字符序列。例如,字符串 " tokenization" 被分解为 " token" 和 "ization",而像 " the" 这样的短常见单词则表示为单个 token。请注意,在句子中,每个单词的第一个 token 通常以空格字符开头。查看我们的 [tokenizer 工具](https://platform.openai.com/tokenizer) 来测试特定字符串,并查看它们如何被转换为 token。粗略估算,对于英文文本,1 个 token 大约等于 4 个字符或 0.75 个单词。 +文本生成和嵌入模型以称为 token 的块来处理文本。Token 表示常见的字符序列。例如,字符串 " tokenization" 会被分解为 " token" 和 "ization",而像 " the" 这样简短且常见的单词则表示为单个 token。请注意,在句子中,每个单词的首个 token 通常以一个空格字符开头。请参阅我们的 [tokenizer 工具](https://platform.openai.com/tokenizer) 来测试特定字符串并查看它们是如何转换为 token 的。作为一个粗略的经验法则,对于英文文本,1 个 token 大约对应 4 个字符或 0.75 个单词。 -需要记住的一个限制是,对于文本生成模型,提示和生成的输出合计不得超过模型的最大上下文长度。对于嵌入模型(不输出 token),输入必须短于模型的最大上下文长度。每个文本生成和嵌入模型的最大上下文长度可在 [模型索引](https://developers.openai.com/api/docs/models). \ No newline at end of file +需要牢记的一个限制是:对于文本生成模型,提示和生成输出加在一起不得超过模型的最大上下文长度。对于嵌入模型(它们不会输出 token),输入必须短于模型的最大上下文长度。每个文本生成和嵌入模型的最大上下文长度可在 [模型索引](https://developers.openai.com/api/docs/models). \ No newline at end of file diff --git a/docs/zh/api/docs/gpts/release-notes.md b/docs/zh/api/docs/gpts/release-notes.md index eaad635..4e7ac51 100644 --- a/docs/zh/api/docs/gpts/release-notes.md +++ b/docs/zh/api/docs/gpts/release-notes.md @@ -1,40 +1,40 @@ -# GPT 发布说明 +# GPT Release Notes -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -持续关注 OpenAI GPTs 的更新。你也可以查看更广泛的 [ChatGPT 发布](https://help.openai.com/en/articles/6825453-chatgpt-release-notes) ,用于分享新功能与能力。本页面尽力维护,可能未能反映所有变更 -。 +跟踪 OpenAI GPT 的更新。你还可以查看所有更广泛的 [ChatGPT 版本发布](https://help.openai.com/en/articles/6825453-chatgpt-release-notes) ,用于分享新功能和能力。本页面尽力维护,可能未反映所有更改 +情况。 -### 2024年5月13日 +### 2024 年 5 月 13 日 -- 操作可以 [返回](https://developers.openai.com/api/docs/actions/sending-files#returning-files) 每个请求最多10个文件,以整合到对话中 +- Actions 可以 [返回](https://developers.openai.com/api/docs/actions/sending-files#returning-files) 每次请求最多 10 个文件以集成到对话中 -### 2024年4月8日 +### 2024 年 4 月 8 日 -- 由 Code Interpreter 创建的文件现在可以 [包含](https://developers.openai.com/api/docs/actions/sending-files#sending-files) 在 POST 请求中 +- 代码解释器创建的文件现在可以 [included](https://developers.openai.com/api/docs/actions/sending-files#sending-files) 在 POST 请求中 -### 2024年3月18日 +### 2024-03-18 -- GPT 构建者可查看和恢复其 GPT 的先前版本 +- GPT 构建者可以查看并恢复其 GPT 的先前版本 -### 2024年3月15日 +### 2024 年 3 月 15 日 -- POST 请求可以 [包含最多十个文件](https://developers.openai.com/api/docs/actions/sending-files#sending-files) (包括 DALL-E 生成的图片)从对话中 +- POST 请求可以 [包含最多十个文件](https://developers.openai.com/api/docs/actions/sending-files#sending-files) (包括 DALL-E 生成的图像)来自对话 ### 2024年2月22日 -- 用户现在可以对 GPT 进行评分,这为构建者提供反馈,并为商店中的其他用户提供信号 +- 用户现在可以为 GPT 评分,这为构建者提供反馈,也为商店中的其他用户提供信号 -- 用户现在可以在构建者选择接收时,私下留下反馈 +- 用户现在可以在构建者选择启用时为其留下私密反馈 -- 每个 GPT 现在都有一个关于页面,包含该 GPT 的信息,如评分、类别、对话次数、起始提示等 +- 每个 GPT 现在都有一个关于页面,包含 GPT 的相关信息,包括评分、类别、对话次数、起始提示等 - 构建者现在可以将他们的 Twitter、LinkedIn 和 GitHub 社交资料链接到他们的 GPT -### 2024年1月10日 +### 2024 年 1 月 10 日 -- 该 [GPT Store](https://openai.com/blog/introducing-gpts) 已公开发布,设有分类和各种排行榜 +- 该 [GPT Store](https://openai.com/blog/introducing-gpts) 公开发布,并设有各类分类与排行榜 -### 2023年11月6日 +### Nov 6th, 2023 -- [GPTs](https://openai.com/blog/introducing-gpts) 让用户能够针对各种使用场景定制 ChatGPT,并与其他用户分享这些定制内容 \ No newline at end of file +- [GPTs](https://openai.com/blog/introducing-gpts) 允许用户针对不同使用场景自定义 ChatGPT,并与他人共享这些定制版本 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/admin-apis.md b/docs/zh/api/docs/guides/admin-apis.md index f91fff3..d1fcbcc 100644 --- a/docs/zh/api/docs/guides/admin-apis.md +++ b/docs/zh/api/docs/guides/admin-apis.md @@ -1,26 +1,26 @@ -# 管理员 APIs +# Admin APIs -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾添加 `.md` 即可获取该页面的 Markdown 版本。 -管理员API可让你自动化组织管理工作流,例如用户邀请、审计日志审查、项目管理、API密钥管理、支出限额和警报、数据保留以及速率限制操作。可将它们用于后台自动化、安全工作流以及在仪表盘之外运行的操作工具。 +Admin API 可帮助你自动化组织管理工作流,例如用户邀请、审计日志审查、项目管理、API 密钥管理、支出限额与告警、数据保留以及速率限制操作。可用于在控制台之外运行的后台自动化、安全工作流和运维工具。 -有关端点详细信息,请参阅 [管理员API参考](https://developers.openai.com/api/reference/administration/overview),包括 [管理员API密钥](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/admin_api_keys), [邀请](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/invites), [用户](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/users), [项目](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/projects), [支出限额](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/spend_limit),以及 [审计日志](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/audit_logs). +有关接口详情,请参阅 [管理 API 参考](https://developers.openai.com/api/reference/administration/overview),包括 [Admin API 密钥](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/admin_api_keys), [邀请](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/invites), [用户](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/users), [项目](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/projects), [支出限额](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/spend_limit),和 [审计日志](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/audit_logs). -## 使用具有 API 密钥的管理员权限,配合 SDK +## 使用具有管理员权限的 API 密钥配合 SDK -要访问这些端点, [创建一个管理员 API 密钥](https://platform.openai.com/settings/organization/admin-keys)。管理员 API 密钥不能用于非管理端点。 +要访问这些接口, [请创建一个 Admin API 密钥](https://platform.openai.com/settings/organization/admin-keys)。Admin API 密钥无法用于非管理类接口。 -这些 API 版本中添加了对管理员 SDK 的支持,这可能需要更新你的 SDK 版本: +以下 SDK 版本中新增了对 Admin API 的支持,你可能需要更新 SDK 版本: -- Node: `6.36.0` -- Python: `2.34.0` -- Go: `3.34.0` -- Ruby: `0.61.0` -- Java: `4.34.0` +- Node: `6.36.0` +- Python: `2.34.0` +- Go: `3.34.0` +- Ruby: `0.61.0` +- Java: `4.34.0` -设置 `OPENAI_ADMIN_KEY`,然后为你的语言初始化 SDK。 +设置 `OPENAI_ADMIN_KEY`,然后为你的语言初始化 SDK。 -使用管理 API 密钥配置 SDK +使用管理员 API 密钥设置 SDK ```javascript import OpenAI from "openai"; @@ -77,7 +77,7 @@ openai = OpenAI::Client.new( ## 限制项目的模型访问权限 -使用项目模型权限为项目设置允许列表或拒绝列表。设置 `mode` 为 `allow_list` 以仅允许列出的模型,或设置 `mode` 为 `deny_list` 以阻止列出的模型,同时允许其他可用模型。模型 ID 必须对组织可见,包括可见的微调模型快照。 +使用项目模型权限为项目设置允许列表或拒绝列表。设置 `mode` 为 `allow_list` 以仅允许列表中的模型,或设置 `mode` 为 `deny_list` 以阻止列表中的模型,同时允许其他可用模型。模型 ID 必须对组织可见,包括可见的微调模型快照。 设置项目模型允许列表/拒绝列表 @@ -151,9 +151,9 @@ puts(model_permissions.mode) ``` -## 设置组织支出限额 +## 设置组织的消费上限 -使用 [Spend Limits endpoint](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/spend_limit) 来创建或替换你组织的月度硬性支出限制。设置 `threshold_amount` 以分为单位。以下示例设置了每月 $100 的限制: +使用 [Spend Limits 端点](https://developers.openai.com/api/reference/resources/admin/subresources/organization/subresources/spend_limit) 来创建或替换你组织的每月硬性支出限额。以美分为单位设置 `threshold_amount` 。以下示例设置了每月 100 美元的限额: ```bash curl -X POST https://api.openai.com/v1/organization/spend_limit \ @@ -166,13 +166,13 @@ curl -X POST https://api.openai.com/v1/organization/spend_limit \ }' ``` -当追踪的支出达到硬性限制时,受影响的 API 请求将返回 `429` 错误。有关详细信息,请参阅 [spend limits guide](https://developers.openai.com/api/docs/guides/spend-limits). +当已追踪的支出达到硬性限额时,受影响的 API 请求会返回 `429` 错误。有关详细信息,请参阅 [支出限额指南](https://developers.openai.com/api/docs/guides/spend-limits). -## 管理支出限制提醒 +## 管理支出限额提醒 -使用项目支出提醒,当项目支出达到阈值时通知你的团队。阈值金额以美分指定。 +使用项目支出告警,在项目支出达到阈值时通知你的团队。阈值金额以分为单位指定。 -创建项目支出限额提醒 +创建项目支出上限告警 ```javascript const spendAlert = await client.admin.organization.projects.spendAlerts.create( @@ -277,7 +277,7 @@ puts(spend_alert.id) ## 管理数据保留 -使用项目数据保留控制来覆盖或继承组织的项目保留策略。设置 `retention_type` 为 `organization_default` 以继承组织设置。 +使用项目数据保留设置来覆盖或继承组织的项目保留策略。设置 `retention_type` 为 `organization_default` 以继承组织设置。 设置项目数据保留 @@ -347,9 +347,9 @@ puts(data_retention.type) ## 通过电子邮件邀请用户 -使用 Invites 端点向电子邮件地址发送组织邀请。 +使用 Invites 端点向指定邮箱发送组织邀请。 -通过电子邮件邀请用户 +通过邮箱邀请用户 ```javascript const invite = await client.admin.organization.invites.create({ @@ -413,7 +413,7 @@ puts(invite.id) ## 检索审计日志 -使用 Audit Logs 端点列出组织的近期用户操作和配置更改。 +使用 Audit Logs 接口列出组织最近的用户操作和配置变更。 检索审计日志 diff --git a/docs/zh/api/docs/guides/advanced-usage.md b/docs/zh/api/docs/guides/advanced-usage.md index b9d3996..8e8bdfc 100644 --- a/docs/zh/api/docs/guides/advanced-usage.md +++ b/docs/zh/api/docs/guides/advanced-usage.md @@ -1,19 +1,19 @@ # 高级用法 -> 关于完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 获取。 -OpenAI 的文本生成模型(通常称为生成式预训练变换器或大型语言模型)经过训练,能够理解自然语言、代码和图像。这些模型根据输入提供文本输出。这些模型的文本输入也被称为“提示”。设计提示本质上就是你如何“编程”一个大型语言模型,通常是通过提供指令或一些如何成功完成任务的示例。 +OpenAI 的文本生成模型(通常称为生成式预训练 Transformer 或大语言模型)已经过训练,能够理解自然语言、代码和图像。这些模型会针对输入提供文本输出。这些模型的文本输入也称为“提示词”。设计提示词本质上就是你对大语言模型进行“编程”的方式,通常通过提供指令或一些成功完成任务的示例来实现。 -## 可复现的输出 +## 可复现输出 -Chat Completions 默认情况下是非确定性的(这意味着模型输出可能因请求而异)。尽管如此,我们通过向你提供 [`seed`](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数和 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/completions#completions/object-system_fingerprint) 响应字段,为确定性输出提供了一些控制。 +Chat Completions 默认是非确定性的(即模型输出在每次请求之间可能不同)。尽管如此,我们通过提供对以下内容的访问权限,为你提供一些对确定性输出的控制: [`seed`](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数以及 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/completions#completions/object-system_fingerprint) 响应字段。 -要在 API 调用中获得(大致)确定性的输出,你可以: +要在多次 API 调用之间获得(大体上)确定性的输出,你可以: -- 将 [seed](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数设置为你选择的任意整数,并在希望获得确定性输出的所有请求中使用相同的值。 -- 确保所有其他参数(如 `prompt` 或 `temperature`)在每次请求中都完全相同。 +- Set the [seed](https://developers.openai.com/api/reference/resources/chat#chat-create-seed) 参数设为任意整数,并在你希望获得确定性输出的所有请求中使用相同的值。 +- 确保所有其他参数(例如 `prompt` 或 `temperature`)在所有请求中保持完全一致。 -有时,由于OpenAI对模型配置的必要更改,确定性可能会受到影响。为了帮助你跟踪这些更改,我们会公开 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/chat#chat/object-system_fingerprint) 字段。如果该值不同,你可能会因我们系统上的更改而看到不同的输出。 +有时,确定性可能会受到影响,因为 OpenAI 会在我们这边对模型配置进行必要的更改。为了帮助你跟踪这些更改,我们暴露了 [`system_fingerprint`](https://developers.openai.com/api/reference/resources/chat#chat/object-system_fingerprint) 字段。如果该值不同,你可能会看到由于我们在系统中所做的更改而产生的不同输出。 [确定性输出 @@ -21,35 +21,35 @@ Chat Completions 默认情况下是非确定性的(这意味着模型输出可 Explore the new seed parameter in the OpenAI cookbook](https://developers.openai.com/cookbook/examples/reproducible_outputs_with_the_seed_parameter) -## 管理令牌 +## 管理 tokens -语言模型以称为 token 的块为单位读写文本。在英语中,一个 token 可以短至一个字符,也可以长至一个单词(例如, `a` 或 ` apple`),在某些语言中,token 甚至可以短于一个字符或长于一个单词。 +语言模型以称为 token 的文本块为单位读取和生成文本。在英文中,一个 token 可能短到一个字符,也可能长到一个词(例如, `a` 或 ` apple`),而在某些语言中,token 可能比一个字符更短,甚至比一个词更长。 -粗略估算,1 个 token 大约相当于英语文本中的 4 个字符或 0.75 个单词。 +作为粗略的经验法则,对于英文文本,1 个 token 大约对应 4 个字符或 0.75 个词。 -请查看我们的 +查看我们的 [Tokenizer 工具](https://platform.openai.com/tokenizer) - 来测试特定字符串,并了解它们如何被转换为 token。 + ,针对特定字符串进行测试,看看它们如何被转换 token。 -例如,字符串 `"ChatGPT is great!"` 被编码为六个 token: `["Chat", "G", "PT", " is", " great", "!"]`. +例如,字符串 `"ChatGPT is great!"` 会被编码为六个 token: `["Chat", "G", "PT", " is", " great", "!"]`. 一次 API 调用中的 token 总数会影响: -- 你的API调用花费多少,因为你按令牌付费 -- 你的API调用需要多长时间,因为生成更多令牌需要更多时间 -- 你的API调用是否有效,因为总令牌数必须低于模型的最大限制(4097个令牌,适用于 `gpt-3.5-turbo`) +- 你的 API 调用的成本,因为你按 token 付费 +- 你的 API 调用耗时,因为生成的 token 越多,所需时间也越长 +- 你的 API 调用是否能够成功,因为总 token 数必须低于模型的最大限制( `gpt-3.5-turbo`) -输入和输出 token 都计入这些数量。例如,如果你的API调用在消息输入中使用了 10 个 token,并且在消息输出中收到了 20 个 token,则你将按 30 个 token 计费。但请注意,对于某些模型,输入与输出 token 的每个 token 价格不同(请参阅 [定价](https://openai.com/api/pricing) 页面了解更多信息)。 +输入和输出 token 都会计入这些数量。例如,如果你的 API 调用在消息输入中使用了 10 个 token,并在消息输出中收到了 20 个 token,你将被计费 30 个 token。但请注意,对于某些模型,输入 token 与输出 token 的单价可能不同(详见 [定价](https://openai.com/api/pricing) 页面)。 -要查看API调用使用了多少 token,请检查 `usage` API响应中的字段(例如, `response['usage']['total_tokens']`). +要查看一次 API 调用所使用的 token 数,请检查响应中的 `usage` 字段(例如,API 响应中的, `response['usage']['total_tokens']`). -像 `gpt-3.5-turbo` 和 `gpt-4-turbo-preview` 这样的聊天模型使用 token 的方式与 completions API中的可用模型相同,但由于它们基于消息的格式,计算对话将使用多少 token 更加困难。 +等聊天模型 `gpt-3.5-turbo` 和 `gpt-4-turbo-preview` 使用 token 的方式与 completions API 中可用的模型相同,但由于它们基于消息的格式,要统计一次对话将使用多少 token 会更困难一些。 -以下是用于计算传递到 `gpt-3.5-turbo-0613`. +下方是一个针对传入 `gpt-3.5-turbo-0613`. -消息转换为 token 的确切方式可能因模型而异。因此,当未来发布新模型版本时,此函数返回的答案可能仅是近似值。 +的消息进行 token 计数的示例函数。将消息转换为 token 的具体方式可能会因模型而异。因此,当未来发布新模型版本时,该函数返回的结果可能仅为近似值。 ```python def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"): @@ -76,7 +76,7 @@ def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"): ``` -接下来,创建一条消息并将其传递给上面定义的函数以查看 token 数量,这应该与API的 usage 参数返回的值匹配: +接下来,创建一条消息并将其传入上面定义的函数以查看 token 计数,结果应与 API 用量参数返回的值一致: ```python messages = [ @@ -117,7 +117,7 @@ print(f"{num_tokens_from_messages(messages, model)} prompt tokens counted.") ``` -要确认我们上面的函数生成的数字与API返回的数字相同,请创建一个新的 Chat Completion: +为确认上述函数生成的 token 数与 API 返回的结果一致,请创建一个新的 Chat Completion: ```python # example token count from the OpenAI API @@ -154,23 +154,23 @@ System.out.println(usage.promptTokens() + " prompt tokens used."); -要查看文本字符串中有多少 token 而不进行API调用,请使用OpenAI的 [tiktoken](https://github.com/openai/tiktoken) Python 库。示例代码可在OpenAI Cookbook 的指南中找到,该指南介绍了 [如何使用 tiktoken 计算 token](https://developers.openai.com/cookbook/examples/how_to_count_tokens_with_tiktoken). +若要在不发起 API 调用的情况下统计文本字符串中的 token 数,可使用 OpenAI 的 [tiktoken](https://github.com/openai/tiktoken) Python 库。示例代码可在 OpenAI Cookbook 关于 [如何使用 tiktoken 统计 token](https://developers.openai.com/cookbook/examples/how_to_count_tokens_with_tiktoken). -传递给API的每条消息都会消耗内容、角色和其他字段中的 token 数量,外加一些用于幕后格式化的额外 token。这将来可能会略有变化。 +传入 API 的每条消息都会消耗内容、角色及其他字段中的 token 数,再加上少量用于后台格式化的额外 token。该数值在未来可能会略有变化。 -如果对话的 token 过多,无法适应模型的最大限制(例如,对于 `gpt-3.5-turbo` 超过 4097 个 token,或对于 `gpt-4o`),超过 128k 个 token),则你必须截断、省略或以其他方式缩小文本直到其适合为止。请注意,如果从 messages 输入中删除一条消息,模型将丢失对其的所有了解。 +如果一次对话中的 token 数量超出模型的最大限制(例如,对于 `gpt-3.5-turbo` 超过 4097 个 token,或对于 `gpt-4o`),超过 128k 个 token),你必须对文本进行截断、省略或其他方式的缩减,直到其符合限制。请注意,如果某条消息从 messages 输入中被移除,模型将失去与之相关的全部上下文。 -请注意,长对话更可能收到不完整的回复。例如,一个 `gpt-3.5-turbo` 长达 4090 个标记的对话,其回复将在仅 6 个标记后被截断。 +请注意,较长的对话更容易收到不完整的回复。例如,一个 `gpt-3.5-turbo` 长度为 4090 个 token 的对话,其回复在仅生成 6 个 token 后就会被截断。 ## 参数详情 -### 频率与存在惩罚 +### 频率和存在惩罚 -在 [Chat Completions API](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions) 中发现的频率和存在惩罚可用于降低采样重复 token 序列的可能性。 +在 [Chat Completions API](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions) 中存在的频率和存在惩罚,可用于降低采样出重复词元序列的可能性。 -它们通过直接修改 logits(未归一化的对数概率)并添加一个加性贡献来起作用。 +它们的工作原理是直接对 logits(未归一化的对数概率)施加一个加性贡献来修改其值。 ```python mu[j] = mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence @@ -180,21 +180,21 @@ mu[j] = mu[j] - c[j] * alpha_frequency - float(c[j] > 0) * alpha_presence 其中: - `mu[j]` 是第 j 个 token 的 logits -- `c[j]` 是该 token 在当前位置之前被采样的频率 -- `float(c[j] > 0)` 如果 `c[j] > 0` 则为 1,否则为 0 +- `c[j]` 是在当前位置之前该 token 被采样的次数 +- `float(c[j] > 0)` 为 1 如果 `c[j] > 0` 否则为 0 - `alpha_frequency` 是频率惩罚系数 -- `alpha_presence` 是存在性惩罚系数 +- `alpha_presence` 是存在惩罚系数 -如我们所见,存在惩罚是一个一次性的加性贡献,适用于所有至少被采样一次的令牌,而频率惩罚是一个与特定令牌已被采样的频率成比例的贡献。 +可以看到,存在惩罚是一次性累加的贡献,会作用于所有至少被采样过一次的 token;而频率惩罚则按某个 token 已被采样的频率成比例地施加贡献。 -如果目标仅是稍微减少重复采样,惩罚系数的合理值约为0.1到1。如果目标是强烈抑制重复,则可以将系数增加到2,但这会明显降低采样的质量。负值可用于增加重复的可能性。 +如果目标只是适度减少重复采样,惩罚系数的合理取值大约在 0.1 到 1 之间。如果目标是强力抑制重复,可以把系数提高到 2,但这会明显降低样本质量。使用负值则可以提高重复出现的可能性。 -### Token 对数概率 +### Token log probabilities -该 [`logprobs`](https://developers.openai.com/api/reference/resources/chat#chat-create-logprobs) 参数见于 [Chat Completions API](https://developers.openai.com/api/reference/resources/chat) 以及 [Legacy Completions API](https://developers.openai.com/api/reference/resources/completions),中,在请求时提供每个输出 token 的对数概率,以及每个 token 位置上有限数量的最可能 token 及其对数概率。这在某些情况下有助于评估模型对其输出的置信度,或检查模型可能给出的替代响应。 +该 [`logprobs`](https://developers.openai.com/api/reference/resources/chat#chat-create-logprobs) parameter found in the [Chat Completions API](https://developers.openai.com/api/reference/resources/chat) 和 [旧版 Completions API](https://developers.openai.com/api/reference/resources/completions), when requested, provides the log probabilities of each output token, and a limited number of the most likely tokens at each token position alongside their log probabilities. This can be useful in some cases to assess the confidence of the model in its output, or to examine alternative responses the model might have given. ### 其他参数 -请参阅完整的 [API 参考文档](https://platform.openai.com/docs/api-reference/chat) 以了解更多信息。 \ No newline at end of file +请参阅完整 [API 参考文档](https://platform.openai.com/docs/api-reference/chat) 以了解更多信息。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agent-builder-safety.md b/docs/zh/api/docs/guides/agent-builder-safety.md index 5b0c118..8be4b8f 100644 --- a/docs/zh/api/docs/guides/agent-builder-safety.md +++ b/docs/zh/api/docs/guides/agent-builder-safety.md @@ -1,61 +1,61 @@ # 构建智能体的安全性 -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 -当你使用 [Agent Builder](https://developers.openai.com/api/docs/guides/agent-builder),构建和部署智能体时,了解相关风险非常重要。了解风险类型以及如何在构建多智能体工作流时缓解这些风险。 +当你使用 智能体 进行构建和部署时, [智能体 Builder](https://developers.openai.com/api/docs/guides/agent-builder),了解相关风险非常重要。了解风险类型以及在构建多 智能体 工作流时如何缓解它们。 -OpenAI 正在弃用 Agent Builder。现有用户可以在过渡期内继续使用它 - ,该产品计划于 - 2026年11月30日关闭。ChatKit 仍然可用。请参阅 [弃用 - 页面](https://developers.openai.com/api/docs/deprecations#2026-06-03-agent-builder) 了解当前的 - 时间线。 +OpenAI 正在弃用 智能体 Builder。现有用户可以继续使用它 + 在过渡期内,该产品计划于 + 2026 年 11 月 30 日关停。ChatKit 仍然可用。请参阅 [弃用 + 页面](https://developers.openai.com/api/docs/deprecations#2026-06-03-agent-builder) 以获取当前 + 时间表。 ## 风险类型 -某些智能体工作流模式更容易面临风险。在聊天工作流中,两个重要的考虑因素是保护用户输入以及谨慎进行 MCP 工具调用。 +某些智能体工作流模式更容易面临风险。在聊天工作流中,有两个重要的注意事项:保护用户输入,以及谨慎处理 MCP 工具调用。 -### 提示注入 +### Prompt injections -**提示注入** 是一种常见且危险的攻击类型。当不受信任的文本或数据进入 AI 系统,并且这些文本或数据中包含的恶意内容试图覆盖给 AI 的指令时,就会发生提示注入。提示注入的最终目标各不相同,但可能包括通过下游工具调用窃取私有数据、采取偏差操作,或以其他方式以非预期的方式改变模型行为。例如,提示可能会诱使数据查找智能体发送原始客户记录,而不是预期的摘要。在以下文档中查看相关示例: [Codex 互联网访问文档](https://developers.openai.com/codex/cloud/internet-access/). +**提示注入** 是一类常见且危险的攻击。提示注入发生在不受信任的文本或数据进入 AI 系统时,这些文本或数据中的恶意内容试图覆盖对 AI 的指令。提示注入的最终目标各不相同,但可能包括通过下游工具调用窃取私有数据、执行不一致的操作,或以其他意外方式改变模型行为。例如,某个提示可能欺骗数据查询智能体,使其发送原始客户记录而非预期的摘要。相关示例可参阅 [Codex internet access 文档](https://developers.openai.com/codex/cloud/internet-access/). ### 私有数据泄露 -**私有数据泄露**,即智能体意外共享私有数据,也是需要防范的风险。模型可能以非预期的方式泄露私有数据,而背后并无攻击者。例如,模型可能向 MCP 发送超出用户预期或意图的数据。虽然护栏能更好地控制包含在上下文中的信息,但你无法完全控制模型选择与连接的 MCP 共享哪些内容。 +**私有数据泄露**,即当 智能体 不慎共享私有数据时,也是一种需要防范的风险。模型有可能在并无攻击者参与的情况下,以非预期的方式泄露私有数据。例如,模型可能向某个 MCP 发送超出用户预期或意图的数据。虽然护栏可以提供更好的控制来限制纳入上下文的信息,但你无法完全掌控模型会选择与所连接的 MCP 共享哪些内容。 -请使用以下指导来减少攻击面并减轻这些风险。然而, _即使采取这些缓解措施_,智能体也并非完美,仍可能犯错或被欺骗;因此,了解这些风险并对授予智能体的访问权限以及使用智能体的方式保持谨慎非常重要。 +请遵循以下指引来缩小攻击面并降低这些风险,但需要注意的是, _即便采取了这些缓解措施_,智能体 仍然无法做到完美,仍可能犯错或被欺骗;因此,务必了解这些风险,谨慎决定授予 智能体 的访问权限以及使用 智能体 的方式。 -## 不要在开发者消息中使用不受信任的变量 +## 不要在开发者消息中使用不可信的变量 -由于开发者消息优先于用户和助手消息,直接将不受信任的输入注入开发者消息会让攻击者获得最高程度的控制权。通过用户消息传递不受信任的输入以限制其影响。这对于用户输入被传递给敏感工具或特权上下文的工作流尤为重要。 +由于开发者消息优先于用户消息和助手消息,将不受信任的输入直接注入开发者消息会让攻击者获得最高程度的控制权。请将不受信任的输入通过用户消息传递,以限制其影响。这一点对于将用户输入传递给敏感工具或特权上下文的工作流尤为重要。 ## 使用结构化输出约束数据流 -提示注入通常依赖于模型自由生成意想不到的文本或命令,这些内容会向下游传播。通过在节点之间定义结构化输出(例如,枚举、固定架构、必填字段名),你可以消除攻击者可利用来走私指令或数据的自由格式通道。 +提示注入通常依赖模型自由生成意外文本或指令,进而向下游传播。通过在各节点之间定义结构化输出(例如枚举、固定 schema、必需的字段名),你可以消除攻击者可利用来偷渡指令或数据的自由格式通道。 -## 通过清晰的指导和示例来引导智能体 +## 用清晰的指引和示例引导智能体 -由于幻觉、误解、用户输入模糊等原因,智能体工作流可能会执行你不希望的操作。例如,智能体可能会提供本不该提供的退款,或删除本不应删除的信息。降低此风险的最佳方式是强化你的提示词,完善期望策略的文档说明并提供清晰的示例。预判意外场景并提供示例,以便智能体在这些情况下知道该怎么做。 +智能体工作流可能会因幻觉、理解错误、用户输入不明确等原因执行你不希望发生的操作。例如,智能体可能会提供未经授权的退款,或删除不应删除的信息。降低此类风险的最佳方式是使用清晰描述所需策略和明确示例的优质提示来强化提示词。请预见非预期场景并提供示例,以便智能体在这些情况下知道如何应对。 ## 使用 GPT-5 或 GPT-5-mini -这些模型在遵循开发者指令方面更加严谨,并且对越狱和间接提示注入表现出更强的稳健性。在智能体节点级别配置这些模型,以获得更具弹性的默认姿态,尤其适用于较高风险的工作流。 +这些模型在遵循开发者指令方面更有纪律,并且在抵御越狱攻击和间接提示注入方面表现出更强的稳健性。在智能体节点层面配置这些模型,以获得更具韧性的默认姿态,尤其是对于较高风险的工作流。 ## 保持工具审批开启 -使用 MCP 工具时,始终启用工具审批,以便最终用户能够审查并确认每项操作,包括读取和写入。在 Agent Builder 中,使用 [人工审批](https://developers.openai.com/api/docs/guides/node-reference#human-approval) 节点。 +使用 MCP 工具时,请始终启用工具审批,以便终端用户能够审查并确认每一个操作,包括读取和写入操作。在 智能体 Builder 中,使用 [人工审批](https://developers.openai.com/api/docs/guides/node-reference#human-approval) node. ## 为用户输入使用护栏 -使用内置的 [护栏](https://developers.openai.com/api/docs/guides/node-reference#guardrails) 对传入输入进行清理,以编辑个人身份信息(PII)并检测越狱尝试。尽管 Agent Builder 中的护栏节点单独使用并非万无一失,但它们是有效的第一道保护屏障。 +使用内置 [护栏](https://developers.openai.com/api/docs/guides/node-reference#guardrails) 对传入输入进行清洗,以编辑个人可识别信息(PII)并检测越狱尝试。虽然 智能体 Builder 中的护栏节点单独来看并非万无一失,但它们构成了有效的第一道防线。 -## 运行追踪评分器和评估 +## 运行 追踪 评分器与评估 -如果你理解模型在做什么,就能更好地发现并预防错误。使用 [evals](https://developers.openai.com/api/docs/guides/evaluation-getting-started) 来评估和改进性能。追踪评分可对智能体追踪的特定部分(如决策、工具调用或推理步骤)提供分数和注释,以评估智能体在哪些方面表现良好或犯了错误。 +如果你了解模型在做什么,就能更好地发现并防止错误。使用 [evals](https://developers.openai.com/api/docs/guides/evaluation-getting-started) 来评估并改进性能。追踪评分可以为智能体的追踪中的特定部分(例如决策、工具调用或推理步骤)提供分数和标注,从而评估智能体表现良好的地方或犯错的地方。 -## 组合技术 +## 组合技巧 -通过结合这些技术并强化关键步骤,你可以显著降低提示注入、恶意工具使用或意外智能体行为的风险。 +通过结合这些技术并加固关键步骤,你可以显著降低提示注入、恶意工具调用或意外智能体行为的风险。 -设计工作流时,确保不可信数据永远不会直接驱动智能体行为。仅从外部输入中提取特定的结构化字段(如枚举或经过验证的 JSON),以限制注入风险在节点之间流动。使用护栏、工具确认和通过用户消息传递的变量来验证输入。 +设计工作流时,确保不可信数据不会直接驱动智能体行为。仅从外部输入中提取特定的结构化字段(例如枚举或经过校验的 JSON),以限制注入风险在节点之间流动。使用护栏、工具确认以及通过用户消息传递的变量来校验输入。 -当智能体处理影响工具调用的任意文本时,风险会上升。结构化输出和隔离大大降低, _但并未完全消除_,这一风险。 \ No newline at end of file +当智能体处理影响工具调用的任意文本时,风险会上升。结构化输出和隔离可以大幅降低, _(但不能完全消除)_,这一风险。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agent-builder.md b/docs/zh/api/docs/guides/agent-builder.md index f48a423..417089f 100644 --- a/docs/zh/api/docs/guides/agent-builder.md +++ b/docs/zh/api/docs/guides/agent-builder.md @@ -1,22 +1,22 @@ -# 智能体构建器 +# 智能体 Builder -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -**Agent Builder** 是一个用于构建多步骤智能体工作流的可视化画布。 +**智能体构建器** 是一个用于构建多步骤智能体工作流的可视化画布。 -你可以从模板开始,为工作流中的每一步拖放节点,提供类型化的输入和输出,并使用实时数据预览运行。当你准备好部署时,通过 ChatKit 将工作流嵌入到你的网站中,或下载 SDK 代码自行运行。 +你可以从模板开始,为工作流中的每个步骤拖放节点,提供带类型的输入和输出,并使用实时数据预览运行。准备好部署后,可以使用 ChatKit 将该工作流嵌入你的网站,或者下载SDK代码自行运行。 -OpenAI 正在弃用 Agent Builder。现有用户可以继续使用它 - 在过渡期内,该产品计划于 - 2026年11月30日关闭。ChatKit 仍然可用。请参阅 [弃用 - 页面](https://developers.openai.com/api/docs/deprecations#2026-06-03-agent-builder) 了解当前 - 时间线。 +OpenAI正在弃用智能体构建器。现有用户可以在过渡期内继续使用 + ,该产品计划于 + 2026 年 11 月 30 日停服。ChatKit 仍可使用。请参阅 [弃用 + 页面](https://developers.openai.com/api/docs/deprecations#2026-06-03-agent-builder) 以了解当前的 + 时间表。 -使用本指南了解构建智能体的过程和组成部分。 +请参考本指南了解构建智能体的流程和组成部分。 -## 智能体与工作流 +## 智能体和工作流 -要构建有用的智能体,你需要为它们创建工作流。一个 **工作流** 是智能体、工具和控制流逻辑的组合。一个工作流封装了处理任务或驱动聊天所涉及的所有步骤和操作,并包含你准备就绪后即可部署的可运行代码。 +要构建有用的智能体,你需要为它们创建工作流。A **工作流** 是智能体、工具和控制流逻辑的组合。一个工作流封装了处理你的任务或驱动你的聊天所涉及的所有步骤和操作,并附带你准备好后即可部署的可运行代码。 @@ -28,57 +28,57 @@ OpenAI 正在弃用 Agent Builder。现有用户可以继续使用它 -构建智能体来处理任务有三个主要步骤: +构建用于处理任务的智能体主要分为三个步骤: -1. 在设计工作流时, [智能体构建器](https://platform.openai.com/agent-builder)。这定义了你的智能体及其工作方式。 -1. 发布你的工作流。它是一个带有 ID 和版本控制的对象。 -1. 部署你的工作流。将 ID 传入你的 [ChatKit](https://developers.openai.com/api/docs/guides/chatkit) 集成中,或下载 Agents SDK 代码自行部署你的工作流。 +1. 使用以下工具设计一个 工作流 [智能体 Builder](https://platform.openai.com/agent-builder)。这里定义你的 智能体 及其协作方式。 +1. 发布你的 工作流。它是一个带有 ID 和版本号的对象。 +1. 部署你的 工作流。将该 ID 传入你的 [ChatKit](https://developers.openai.com/api/docs/guides/chatkit) 集成,或下载 Agents SDK 代码自行部署你的 工作流。 -## 使用节点组合 +## 通过节点进行编排 -在 智能体 Builder 中,插入并连接节点以创建你的 工作流。节点之间的每个连接都成为一个类型化边。点击节点以配置其输入和输出,观察步骤之间的数据约定,并确保下游节点接收到它们期望的属性。 +在智能体构建器中,插入并连接节点以创建你的工作流。节点之间的每个连接都会成为一条类型化边。点击节点可配置其输入与输出,查看步骤之间的数据契约,并确保下游节点能够接收到它们所期望的属性。 -### 示例和模板 +### 示例与模板 -智能体构建器为常见的工作流模式提供模板。从模板开始以了解节点如何协同工作,或从零开始。 +智能体 构建器为常见的 工作流 模式提供模板。可以从模板开始,查看节点如何协同工作,也可以从零开始。 -这是一个作业帮助工作流。它使用智能体来接收问题、重新表述以获得更好的答案、将问题路由到其他专门的智能体,并返回答案。 +下面是一个作业助手 工作流。它使用 智能体 来接收问题,重新组织它们以获得更好的答案,再路由到其他专用的 智能体,最后返回答案。 -![提示词聊天](https://cdn.openai.com/API/docs/images/homework-helper2.png) +![prompts chat](https://cdn.openai.com/API/docs/images/homework-helper2.png) ### 可用节点 -节点是构建智能体的基础模块。要查看所有可用节点及其配置选项,请参阅 [节点参考文档](https://developers.openai.com/api/docs/guides/node-reference). +节点是构建智能体的基础单元。要查看所有可用的节点及其配置选项,请参阅 [节点参考文档](https://developers.openai.com/api/docs/guides/node-reference). -### 预览和调试 +### 预览与调试 -在构建过程中,你可以通过使用 **预览** 功能来测试你的工作流。在此,你可以交互式运行你的工作流、附加示例文件,并观察每个节点的执行情况。 +在构建过程中,你可以使用 **Preview** 功能来测试你的工作流。在此处,你可以交互式地运行你的工作流,附加示例文件,并观察每个节点的执行过程。 ### 安全与风险 -构建智能体工作流存在风险,如提示注入和数据泄漏。参见 [构建智能体时的安全性](https://developers.openai.com/api/docs/guides/agent-builder-safety) 以了解并帮助缓解智能体工作流的风险。 +构建智能体工作流存在一些风险,例如提示注入和数据泄露。请参阅 [构建智能体时的安全注意事项](https://developers.openai.com/api/docs/guides/agent-builder-safety) 以了解并帮助降低智能体工作流的风险。 ### 评估你的工作流 -运行 [追踪评分器](https://developers.openai.com/api/docs/guides/trace-grading) 在智能体构建器内部。在顶部导航中,点击 **评估**。在这里,你可以选择一个追踪(或一组追踪)并运行自定义评分器来评估整体工作流性能。 +运行 [追踪 评分器](https://developers.openai.com/api/docs/guides/trace-grading) 在 智能体 Builder 内部。在顶部导航中,点击 **评估**。在这里,你可以选择一条 追踪(或一组 追踪)并运行自定义评分器来评估整体 工作流 性能。 ## 发布你的工作流 -智能体 Builder 会在你工作时自动保存进度。当你对 工作流 满意后,即可发布它,以创建新的主版本作为快照。然后你可以在以下位置使用你的 工作流 [ChatKit](https://developers.openai.com/api/docs/guides/chatkit),中,这是一个用于嵌入聊天体验的 OpenAI 框架。 +智能体 构建器在编辑过程中会自动保存你的工作。当你对工作流满意后,将其发布以创建一个作为快照的新主版本。然后你可以在 [ChatKit](https://developers.openai.com/api/docs/guides/chatkit),中使用它,ChatKit 是一个用于嵌入聊天体验的 OpenAI 框架。 -你可以创建新版本,或在 API 调用中指定较旧的版本。 +你可以在 API 调用中创建新版本或指定旧版本。 ## 在你的产品中部署 -当你准备好实现所创建的智能体工作流时,请点击 **Code** 位于顶部导航中。在生产环境中实现你的工作流有两种选择: +当你准备实现所创建的智能体工作流时,请点击 **Code** 在顶部导航栏中。在生产环境中实现你的工作流有两种方式: -**ChatKit**:按照 [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit) 操作,并传入你的工作流 ID,将此工作流嵌入到你的应用程序中。如果你不确定,我们推荐此选项。 +**ChatKit**:按照 [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit) 操作,并将你的工作流 ID 传入,以便将该工作流嵌入到你的应用中。如果你不确定,我们推荐使用此方式。 -**高级集成**:复制工作流代码并可在任何地方使用。你可以在自己的基础设施上运行 ChatKit,并使用Agents SDK来构建和定制智能体聊天体验。 +**高级集成**:复制该工作流代码并在任意位置使用。你可以在自己的基础设施上运行 ChatKit,并使用Agents SDK来构建和定制智能体聊天体验。 ## 后续步骤 -现在你已经创建了智能体工作流,使用 ChatKit 将其带入你的产品中。 +现在你已经创建了智能体工作流,可以通过 ChatKit 将其集成到你的产品中。 - [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit) → - [高级集成](https://developers.openai.com/api/docs/guides/custom-chatkit) → \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agent-builder/migrate-from-agent-builder.md b/docs/zh/api/docs/guides/agent-builder/migrate-from-agent-builder.md index ea94821..a7d03dc 100644 --- a/docs/zh/api/docs/guides/agent-builder/migrate-from-agent-builder.md +++ b/docs/zh/api/docs/guides/agent-builder/migrate-from-agent-builder.md @@ -1,54 +1,54 @@ -# 从智能体构建器迁移 +# 从 智能体 Builder 迁移 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -使用本指南将现有 智能体 Builder 工作流 导出为 Agents SDK 代码。 -你可以使用导出结果在 ChatGPT Workspace 中重新创建工作流为智能体,或 -在你的应用程序中继续使用 Agents SDK。 +使用本指南将现有的 智能体 Builder 工作流 导出为 Agents SDK 代码。 +你可以使用导出的代码将 工作流 重新创建为 ChatGPT Workspace 智能体,或者 +在你的应用中使用 Agents SDK 继续开发。 -此过程不会转换你的 工作流 图,也不能保证每项 -行为都能原样保留。 +此过程不会转换你的 工作流 图,也无法保证所有 +行为都能原样迁移。 ## 选择迁移路径 - **Agents SDK**:最适合通过代码构建智能体。 -- **ChatGPT Workspace 智能体**:最适合通过自然 - 语言构建智能体并与团队分享。 +- **ChatGPT Workspace 智能体**:最适合通过自然语言构建智能体 + ,并与团队共享。 -## 迁移之前 +## 迁移前的准备工作 你需要访问 工作流 中的 -[智能体 构建器](https://developers.openai.com/api/docs/guides/agent-builder). +[智能体 Builder](https://developers.openai.com/api/docs/guides/agent-builder). -## 导出你的 工作流 +## 导出你的工作流 -1. 在 智能体 Builder 中打开你的 工作流。 -1. 选择 **Code** 在顶部导航中。 +1. 在 智能体构建器中打开你的 工作流。 +1. 选择 **Code** 在顶部导航栏中。 1. 选择 **Agents SDK** 在代码对话框中。 1. 选择 **TypeScript** 或 **Python**,然后复制完整的导出内容。 -![已选中 智能体 Builder 代码对话框,并选择了 Agents SDK](https://developers.openai.com/images/platform/guides/agent-builder/agents-sdk-export.png) +![智能体 Builder Code 对话框,已选中 Agents SDK](https://developers.openai.com/images/platform/guides/agent-builder/agents-sdk-export.png) ## 选项 1:继续使用 Agents SDK -当你希望在某个应用中运行导出的工作流时,可使用此选项 -构建和部署。 +当你希望在你构建并部署的应用中运行导出的工作流时,请使用此选项 +。 -将 TypeScript 或 Python 导出复制到你的应用中,安装并 +将 TypeScript 或 Python 导出代码复制到你的应用中,安装并 配置匹配的Agents SDK,然后在你的运行时中测试该工作流。有关 配置和运行导出的指导,请参阅 [Agents SDK 概述](https://developers.openai.com/api/docs/guides/agents) 和 [快速入门](https://developers.openai.com/api/docs/guides/agents/quickstart). -在部署前,请验证你的应用配置和行为。 +在部署前验证你应用的配置和行为。 -## 选项 2:从导出文件创建智能体工作区 +## 选项 2:从导出中创建工作区 智能体 要使用此选项,你需要一个 ChatGPT Business、Enterprise 或 Edu 工作区 -,并具有 [工作区智能体的访问权限](https://chatgpt.com/agents) 及创建智能体的权限。 -及创建智能体的权限。 +具有对 [工作区 智能体 的访问权限](https://chatgpt.com/agents) 以及 +创建 智能体 的权限。 -在 ChatGPT 中, [创建一个工作区智能体](https://chatgpt.com/agents/studio/new). -将导出的代码粘贴到聊天中,并附上此提示: +在 ChatGPT 中, [创建工作区 智能体](https://chatgpt.com/agents/studio/new). +将你导出的代码粘贴到聊天中,并使用以下提示词: ```text Please help me convert this workflow into an agent: @@ -56,41 +56,41 @@ Please help me convert this workflow into an agent: ``` -在继续之前,请审查构建器识别为需要更改的任何行为。 -在继续之前,请审查构建器识别为需要更改的任何行为。 +在继续之前,请审阅构建器识别出的所有需要更改的行为 +继续。 -## Review and test the 智能体 +## 审阅并测试该智能体 -某些工作流行为可能需要手动重建。在测试迁移后的智能体时,请审查控制流、 -触发器、工具和权限。 +某些 工作流 行为可能需要手动重建。请在测试迁移后的, +智能体 时,审查其控制流、触发器、工具和权限。 -创建智能体之前: +在创建 智能体 之前: -1. Review the generated instructions and configured capabilities. -1. Configure any required apps, tools, skills, authentication, and connection - permissions. -1. Select **Preview** and test representative inputs from the original - 工作流. -1. Compare the previewed behavior with the original 工作流's expected - behavior. -1. Select **Create** only after you have validated the migrated 智能体. +1. 审阅生成的指令和已配置的能力。 +1. 配置所需的任何应用、工具、技能、身份验证和连接 + 权限。 +1. 选择 **预览** 并测试来自原始 + 工作流 的代表性输入。 +1. 将预览行为与原始 工作流 的预期 + 行为进行比较。 +1. 选择 **仅** 在验证迁移后的 智能体 后再创建。 -遵循与你用于工作流相同的安全实践,尤其是在 -智能体可以访问私有数据或通过连接的工具采取行动时。 +遵循你为 工作流 使用的相同安全实践,尤其是在 +智能体 可以访问私有数据或通过连接的工具执行操作时。 ## 限制 -- 核心确定性很强的工作流可能无法忠实地迁移到 - 一个工作区 智能体。 -- 连接的应用程序、身份验证、发布和权限配置 - 需要在 ChatGPT 中单独审查。 -- Agents SDK 实现要求你验证应用程序的 +- 核心具有强确定性的工作流可能无法忠实地迁移到 + 工作区 智能体。 +- 连接的应用、身份验证、发布和权限配置 + 需要在 ChatGPT 中单独审核。 +- 基于 Agents SDK 的实现要求你验证应用的 运行时配置、工具、身份验证、权限和部署。 ## 相关资源 - [智能体 构建器](https://developers.openai.com/api/docs/guides/agent-builder) -- [构建 智能体 时的安全性](https://developers.openai.com/api/docs/guides/agent-builder-safety) +- [构建 智能体 时的安全](https://developers.openai.com/api/docs/guides/agent-builder-safety) - [Agents SDK 概述](https://developers.openai.com/api/docs/guides/agents) - [Agents SDK 快速入门](https://developers.openai.com/api/docs/guides/agents/quickstart) - [在 ChatGPT 中构建工作区 智能体 以完成可重复的工作](https://developers.openai.com/cookbook/articles/chatgpt-agents-sales-meeting-prep) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agent-evals.md b/docs/zh/api/docs/guides/agent-evals.md index bf6cb31..0b8dc2a 100644 --- a/docs/zh/api/docs/guides/agent-evals.md +++ b/docs/zh/api/docs/guides/agent-evals.md @@ -1,46 +1,46 @@ -# 评估 智能体 工作流 +# 评估智能体工作流 -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt). 可在页面 URL 后追加 `.md` 以获取文档页面的 Markdown 版本。 -OpenAI 平台提供一套评估工具,帮助你确保 智能体 的表现一致且准确。 +OpenAI 平台提供了一套评估工具,帮助你确保 智能体 的表现稳定且准确。 -请将此页作为对于 智能体 工作流最重要的评估方式的决策点。 +对于 智能体 工作流,请以此页面作为选择最关键评估界面的决策依据。 -## 仍在调试行为时,先从追踪开始 +## 在仍处于行为调试阶段时,从追踪入手 -追踪评分是识别工作流级别问题的最快方式。追踪捕获单次运行的模型调用、工具调用、护栏和交接的端到端记录。评分器让你能够使用结构化标准对这些追踪进行评分,从而在大规模范围内发现回归和故障模式。 +追踪评分是识别 工作流 级问题的最快方式。一次 追踪 会捕获单次运行中模型调用、工具调用、护栏和交接的端到端记录。评分器允许你使用结构化标准对这些追踪进行打分,以便规模化地发现回归和失败模式。 -当你想回答以下问题时,使用追踪评分: +当你想要回答以下问题时,可以使用 追踪 评分: -- 智能体是否选择了正确的工具? -- 交接是否在应该发生时发生了? +- 智能体是否选择了合适的工具? +- 是否在应该交接时发生了交接? - 工作流是否违反了指令或安全策略? -- 提示或路由更改是否改善了端到端行为? +- 提示或路由的更改是否改善了端到端行为? -### 追踪评估工作流 +### 追踪评估 工作流 -1. 打开 **日志** > **追踪** 在仪表板中。 -2. 检查来自基于 SDK 应用的代表性 工作流 追踪,或在过渡窗口期间检查现有 智能体 Builder 工作流。 -3. 创建一个评分器,并针对所选追踪运行它。 -4. 使用结果来优化提示、工具表面、路由逻辑或护栏。 +1. 打开 **日志** > **追踪** 查看仪表板。 +2. 从基于 SDK 的应用,或在过渡期内的现有 智能体 Builder 工作流 中,检查一个具有代表性的 工作流 追踪。 +3. 创建一个评分器,并将其运行在所选追踪上。 +4. 根据结果优化提示词、工具界面、路由逻辑或护栏。 -对于以代码为先的 SDK 工作流,请从 [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability#tracing) 开始,以在正式制定评分器之前获得高信噪比的追踪。 +对于代码优先的 SDK 工作流,请从 [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability#tracing) 入手,以便在正式定义评分器之前获得高信号的追踪。 -## 当你需要可重复性时,转向数据集和评估运行 +## 在需要可复现性时切换到数据集和评估运行 -一旦你明确了“好”的标准,就从单个追踪转向可重复的数据集和评估运行。当你想对变更进行基准测试、比较提示词或随时间进行更大规模的评估时,这一步是正确的选择。 +当你明确了“好”的标准之后,就可以从单次的追踪转向可复用的数据集和评测运行。当你想对改动进行基准测试、比较不同的 prompt,或者随着时间推移开展更大规模的评测时,这是正确的一步。 -如果你需要高级功能,例如针对外部模型进行评估、评估 API,或更大规模的批量评估,请使用 [Evals](https://developers.openai.com/api/docs/guides/evals) 以及数据集。 +如果你需要更高级的功能,例如对外部模型进行评测、评测 API,或开展更大规模的批量评测,请使用 [Evals](https://developers.openai.com/api/docs/guides/evals) 配合数据集一起使用。 ## 相关评估界面 -[在评估中入门:数据集 +[开始使用评估:数据集 Operate a flywheel of continuous improvement using evaluations.](https://developers.openai.com/api/docs/guides/evaluation-getting-started) -[使用评估 +[使用评估进行开发 @@ -52,7 +52,7 @@ OpenAI 平台提供一套评估工具,帮助你确保 智能体 的表现一 Use your dataset to automatically improve your prompts.](https://developers.openai.com/api/docs/guides/prompt-optimizer) -[食谱:使用评估构建稳健提示 +[Cookbook:使用评估构建弹性提示 diff --git a/docs/zh/api/docs/guides/agents.md b/docs/zh/api/docs/guides/agents.md index ccce944..39d1de0 100644 --- a/docs/zh/api/docs/guides/agents.md +++ b/docs/zh/api/docs/guides/agents.md @@ -1,16 +1,16 @@ # Agents SDK -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 -智能体是能够进行规划、调用工具、跨专家协作,并保持足够状态以完成多步骤工作的应用程序。 +智能体 是能够规划任务、调用工具、跨专家协作,并保持足够状态以完成多步工作的应用程序。 -## 让第一个智能体运行起来 +## 运行你的第一个智能体 -从 [Agents SDK 快速入门](https://developers.openai.com/api/docs/guides/agents/quickstart) 开始,安装SDK、定义一个智能体并运行它。完成该步骤后,返回此处选择你的应用所需的下一个能力。 +从 [Agents SDK 快速入门](https://developers.openai.com/api/docs/guides/agents/quickstart) 开始,安装 SDK,定义一个智能体,并运行它。确认无误后,返回此处为你的应用选择下一项所需能力。 ## 获取 Agents SDK -请访问 GitHub 仓库以获取更多示例、问题和特定语言的参考详情。 +请使用 GitHub 仓库获取更多示例、问题反馈以及针对特定语言的参考细节。 @@ -31,66 +31,66 @@ | 如果你想 | 从这里开始 | 原因 | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- | -| 构建一个代码优先的智能体应用 | [快速入门](https://developers.openai.com/api/docs/guides/agents/quickstart) | 这是实现可用 SDK 集成的最短路径。 | -| 清晰定义一位专家 | [智能体定义](https://developers.openai.com/api/docs/guides/agents/define-agents) | 当你还在为单个智能体构建契约时,从这里开始。 | -| 选择模型、默认设置和传输方式 | [模型和提供商](https://developers.openai.com/api/docs/guides/agents/models) | 当模型选择、提供商设置或传输策略影响工作流时,使用此选项。 | -| 理解运行时循环和状态 | [运行智能体](https://developers.openai.com/api/docs/guides/agents/running-agents) | 这里是智能体循环、流式处理和延续策略的所在之处。 | -| 在基于容器的环境中运行工作 | [沙盒智能体](https://developers.openai.com/api/docs/guides/agents/sandboxes) | 当智能体需要文件、命令、软件包、快照、挂载或提供商链接时,使用此选项。 | -| 设计专家的所有权 | [编排和交接](https://developers.openai.com/api/docs/guides/agents/orchestration) | 当你需要多个智能体并必须决定谁负责回复时,请使用此选项。 | -| 添加验证或人工审核 | [护栏和人工审核](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) | 当工作流应在高风险操作继续前阻塞或暂停时,请使用此选项。 | -| 了解运行返回什么 | [结果与状态](https://developers.openai.com/api/docs/guides/agents/results) | 本页解释最终输出、可恢复状态和下一轮表面。 | -| 添加托管工具、函数工具或 MCP | [使用工具](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) 和 [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability) | 工具语义位于平台工具文档中;SDK特定的 MCP 和追踪在此处。 | -| 检查和改进运行 | [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability) 和 [评估智能体工作流](https://developers.openai.com/api/docs/guides/agent-evals) | 首先使用追踪进行调试,然后进入评估循环。 | -| 构建语音优先工作流 | [语音智能体](https://developers.openai.com/api/docs/guides/voice-agents) | 使用SDK的语音管道和实时智能体模式。 | - -## 使用 SDK 构建 - -当你的服务器负责部署、工具实现、状态存储和审批决策,而 SDK 运行智能体循环并调用这些工具时,请使用 SDK 追踪。当你需要以下条件时,该路径是最佳选择: - -- 使用 TypeScript 或 Python 编写的类型化应用程序代码 +| 以代码优先的方式构建一个 智能体 应用 | [快速入门](https://developers.openai.com/api/docs/guides/agents/quickstart) | 这是通往可运行的 SDK 集成的最短路径。 | +| 清晰地定义一个专家 | [智能体 定义](https://developers.openai.com/api/docs/guides/agents/define-agents) | 当你还在为单个 智能体 设计接口契约时,从这里开始。 | +| 选择模型、默认值和传输方式 | [模型与提供商](https://developers.openai.com/api/docs/guides/agents/models) | 当模型选择、提供商设置或传输策略影响 工作流 时,使用本文档。 | +| 理解运行时循环与状态 | [运行 智能体](https://developers.openai.com/api/docs/guides/agents/running-agents) | 这里介绍了 智能体 循环、流式输出以及 延续 策略。 | +| 在基于容器的环境中运行任务 | [沙箱化 智能体](https://developers.openai.com/api/docs/guides/agents/sandboxes) | 当 智能体 需要文件、命令、软件包、快照、挂载或提供商连接时,使用本文档。 | +| 设计专家职责划分 | [编排与交接](https://developers.openai.com/api/docs/guides/agents/orchestration) | 当你需要多个 智能体,并且必须决定由谁负责回复时,使用该功能。 | +| 添加校验或人工审核 | [护栏与人工审核](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) | 当 工作流 应该在高风险工作继续之前进行拦截或暂停时,使用该功能。 | +| 了解一次运行会返回什么 | [结果与状态](https://developers.openai.com/api/docs/guides/agents/results) | 本页介绍最终输出、可恢复的状态以及下一轮的接口。 | +| 添加工具、函数工具或 MCP | [使用工具](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) 和 [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability) | 工具语义位于平台工具文档中;SDK-specific MCP 与 追踪 位于此处。 | +| 检查并改进运行 | [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability) 和 [评估 智能体 工作流](https://developers.openai.com/api/docs/guides/agent-evals) | 先使用追踪进行调试,然后再进入评估循环。 | +| 构建一个以语音为先的 工作流 | [语音 智能体](https://developers.openai.com/api/docs/guides/voice-agents) | 使用 SDK 的语音流水线与实时 智能体 模式。 | + +## 使用 SDK 进行构建 + +当你的服务端负责部署、工具实现、状态存储和审批决策时,使用 SDK 追踪模式,而 SDK 则运行 智能体 循环并调用这些工具。当你有以下需求时,这种路径是最佳选择: + +- 使用 TypeScript 或 Python 编写的类型化应用代码 - 对工具、MCP 服务器和运行时行为的直接控制 -- 自定义存储或服务端管理的对话策略 -- 与现有产品逻辑或基础设施的紧密集成 +- 自定义存储或服务端管理的会话策略 +- 与现有产品逻辑或基础设施的深度集成 -一个典型的 SDK 阅读顺序是: +典型的 SDK 阅读顺序为: -- 从 [快速开始](https://developers.openai.com/api/docs/guides/agents/quickstart) 开始,让一个工作流程在屏幕上运行。 -- 使用 [智能体定义](https://developers.openai.com/api/docs/guides/agents/define-agents) 和 [模型与提供商](https://developers.openai.com/api/docs/guides/agents/models) 来清晰地塑造一个专业智能体。 -- 继续查看 [运行智能体](https://developers.openai.com/api/docs/guides/agents/running-agents), [编排与交接](https://developers.openai.com/api/docs/guides/agents/orchestration),以及 [护栏与人工审核](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) 随着工作流变得更加复杂。 -- 使用 [结果与状态](https://developers.openai.com/api/docs/guides/agents/results) 和 [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability) 当应用程序逻辑依赖运行对象或需要对行为有更深入的可见性时。 +- 从 [快速开始](https://developers.openai.com/api/docs/guides/agents/quickstart) 入手,让一次可运行的流程在屏幕上跑通。 +- 使用 [智能体定义](https://developers.openai.com/api/docs/guides/agents/define-agents) 和 [模型与提供商](https://developers.openai.com/api/docs/guides/agents/models) 清晰地塑造一个专家。 +- 接下来进入 [运行智能体](https://developers.openai.com/api/docs/guides/agents/running-agents), [编排与交接](https://developers.openai.com/api/docs/guides/agents/orchestration),以及 [护栏与人工审核](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) ,以应对工作流日趋复杂的情况。 +- 使用 [结果与状态](https://developers.openai.com/api/docs/guides/agents/results) 和 [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability) 当应用逻辑依赖于运行对象或需要更深入地洞察行为时使用。 -## Agents SDK 对比 Responses API +## Agents SDK vs. Responses API -当你想要掌控循环时,使用 Responses API。当你希望 Agents SDK 来运行循环时,使用 SDK。 +当你希望自主控制执行循环时,请使用 Responses API;当你希望由 SDK 来运行流程时,请使用 Agents SDK。 -### 在以下情况下选择 Responses API: +### 选择 Responses API 的场景 -- 你希望对模型交互、输出项、工具、状态和编排拥有直接控制权,无论工作流是单次调用还是多次调用。 -- 你希望在应用程序中直接实现自定义工具路由、循环或分支逻辑。 +- 你希望直接控制模型交互、输出项、工具、状态和编排,无论 工作流 只调用一次还是多次。 +- 你希望在应用中直接实现自定义工具路由、循环或分支。 -在 [Responses 函数调用流程](https://developers.openai.com/api/docs/guides/function-calling#the-tool-calling-flow),中,你的应用程序接收函数调用、执行函数、返回输出,并再次调用模型。 +在 [Responses function-calling flow](https://developers.openai.com/api/docs/guides/function-calling#the-tool-calling-flow),你的应用会收到函数调用,执行这些函数,返回它们的输出,然后再次调用模型。 -例如,一个 Responses API 工作流可能会搜索知识库并生成带引用的答案。 +例如,一个 Responses API 工作流可能会搜索知识库并生成带引用的回答。 -### 在以下情况下选择Agents SDK: +### 在以下情况选择 Agents SDK -- 你希望 SDK 来管理智能体循环和重复性编排,例如重复的工具调用或分支。 -- 不同的专家需要不同的指令、工具或策略。 -- 你希望使用内置的会话、追踪、护栏或可恢复的审批流程。 +- 你希望 SDK 来管理 智能体 循环以及重复出现的编排工作,例如反复调用工具或进行分支判断。 +- 不同的专家角色需要不同的指令、工具或策略。 +- 你希望内置会话、追踪、护栏或可恢复的审批流程。 -该 [Agents SDK 运行器](https://developers.openai.com/api/docs/guides/agents/running-agents#the-agent-loop) 执行工具循环,在交接后切换智能体,并在运行完成或暂停等待审批时停止。 +该 [Agents SDK runner](https://developers.openai.com/api/docs/guides/agents/running-agents#the-agent-loop) 执行工具循环,在交接后切换智能体,并在运行完成或暂停等待审批时停止。 -例如,Agents SDK 工作流可能调查支持请求,将其交给正确的专家,调用内部系统,请求退款审批,并记录结果。 +例如,一个Agents SDK工作流可能会调查一个支持请求,将其移交给正确的专员,调用内部系统,请求批准退款,并记录结果。 ### 比较 Responses API 与 Agents SDK | | Responses API | Agents SDK | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **最适合** | 自定义模型驱动的功能和工作流 | 具有定义工具和重复编排模式的有界对话或事务性工作流 | -| **核心抽象** | 模型响应 | 智能体运行 | -| **工具** | 平台工具、函数调用以及远程 [Model Context Protocol (MCP)](https://developers.openai.com/api/docs/guides/tools-connectors-mcp) | 附加到可复用智能体的平台工具,以及工具包装器、本地 MCP 连接和 [智能体作为工具](https://developers.openai.com/api/docs/guides/agents/orchestration#use-agents-as-tools-for-manager-style-workflows) | -| **工作流编排** | 你管理自定义循环和分支 | SDK 提供智能体循环和生命周期 | -| **多智能体工作流** | 自行构建路由和委派 | 内置的智能体即工具和 [交接](https://developers.openai.com/api/docs/guides/agents/orchestration#use-handoffs-for-delegated-ownership) | -| **状态** | 手动历史记录、响应链式处理或 [对话](https://developers.openai.com/api/docs/guides/conversation-state#using-the-conversations-api) | 相同的选项,以及 [SDK 会话和可恢复的运行状态](https://developers.openai.com/api/docs/guides/agents/running-agents#choose-one-conversation-strategy) | -| **安全与审批** | 工具特定的审批;你构建更广泛的控制 | 输入、输出和工具 [护栏以及可恢复的审批流程](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) | -| **调试与追踪** | 响应对象和 API 日志 | [内置追踪](https://developers.openai.com/api/docs/guides/agents/integrations-observability#tracing) 跨模型调用、工具、智能体、护栏和交接 | \ No newline at end of file +| **最适合** | 自定义模型驱动的功能和工作流 | 具有明确工具和可复用编排模式的有界对话或事务型工作流 | +| **核心抽象** | 一次模型响应 | 一次智能体运行 | +| **工具** | 平台工具、函数调用以及远程 [模型上下文协议 (MCP)](https://developers.openai.com/api/docs/guides/tools-connectors-mcp) | 附加到可复用智能体的平台工具,以及工具封装、本地 MCP 连接和 [智能体作为工具](https://developers.openai.com/api/docs/guides/agents/orchestration#use-agents-as-tools-for-manager-style-workflows) | +| **工作流编排** | 你自行管理自定义循环和分支 | SDK 提供 智能体 循环和生命周期 | +| **多智能体工作流** | 自行构建路由与委派 | 内置的智能体作为工具,以及 [交接](https://developers.openai.com/api/docs/guides/agents/orchestration#use-handoffs-for-delegated-ownership) | +| **状态** | 手动历史记录、响应链,或 [Conversations](https://developers.openai.com/api/docs/guides/conversation-state#using-the-conversations-api) | 上述同样的选项,以及 [SDK会话和可恢复的运行状态](https://developers.openai.com/api/docs/guides/agents/running-agents#choose-one-conversation-strategy) | +| **安全与审批** | 针对具体工具的审批;更广泛的控制由你自行构建 | 针对输入、输出与工具的 [护栏,以及可恢复的审批流程](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) | +| **调试与追踪** | 响应对象与API日志 | [内置追踪](https://developers.openai.com/api/docs/guides/agents/integrations-observability#tracing) 覆盖模型调用、工具、智能体、护栏和交接 | \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agents/define-agents.md b/docs/zh/api/docs/guides/agents/define-agents.md index 0537661..870ad09 100644 --- a/docs/zh/api/docs/guides/agents/define-agents.md +++ b/docs/zh/api/docs/guides/agents/define-agents.md @@ -1,31 +1,31 @@ # 智能体定义 -> 查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -智能体是基于 SDK 的工作流的核心单元。它封装了模型、指令以及可选运行时行为,例如工具、护栏、MCP 服务器、交接和结构化输出。 +智能体 是基于 SDK 的 工作流 的核心单元。它封装了模型、指令,以及可选的运行时行为,例如工具、护栏、MCP 服务器、交接和结构化输出。 -## 智能体中应包含什么 +## 智能体应包含什么 -使用智能体配置来做出该专家固有的决策: +使用 智能体 配置来做出该专家特有的决策: -| 属性 | 用于 | 阅读下一步 | +| Property | Use it for | Read next | | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `name` | 在追踪和工具/交接界面中的人类可读身份标识 | 本页 | -| `instructions` | 该智能体的任务、约束和风格 | 本页 | -| `prompt` | 基于 Responses API 运行的存储提示配置 | [模型与提供商](https://developers.openai.com/api/docs/guides/agents/models) | -| `model` 以及模型设置 | 选择模型并调整行为 | [模型与提供商](https://developers.openai.com/api/docs/guides/agents/models) | -| `tools` | 智能体可直接调用的能力 | [使用工具](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) | -| `handoffDescription` 在 TypeScript 或 `handoff_description` 在 Python 中 | 提示何时应由另一个智能体在此委托 | [编排与交接](https://developers.openai.com/api/docs/guides/agents/orchestration) | -| `handoffs` | 委托给另一个智能体 | [编排与交接](https://developers.openai.com/api/docs/guides/agents/orchestration) | -| `outputType` 使用 TypeScript 或 `output_type` 使用 Python | 返回结构化输出而非纯文本 | 此页面 | -| 护栏与审批 | 验证、阻塞和审查流程 | [护栏与人工审查](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) | -| MCP 服务器与托管 MCP 工具 | 附加由 MCP 支持的能力 | [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability#mcp) | +| `name` | 在追踪和工具/交接界面中可读的标识 | This page | +| `instructions` | 该 智能体 的任务、约束和风格 | This page | +| `prompt` | 基于 Responses 的运行的已存储提示配置 | [Models and providers](https://developers.openai.com/api/docs/guides/agents/models) | +| `model` 以及模型设置 | 选择模型并调整行为 | [Models and providers](https://developers.openai.com/api/docs/guides/agents/models) | +| `tools` | 智能体 可直接调用的能力 | [Using tools](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) | +| `handoffDescription` 在 TypeScript 中,或 `handoff_description` 在 Python 中 | 提示何时应由另一个 智能体 委派到此处 | [Orchestration and handoffs](https://developers.openai.com/api/docs/guides/agents/orchestration) | +| `handoffs` | 委派给另一个 智能体 | [Orchestration and handoffs](https://developers.openai.com/api/docs/guides/agents/orchestration) | +| `outputType` 在 TypeScript 中,或 `output_type` 在 Python 中 | 返回结构化输出而非纯文本 | This page | +| Guardrails and approvals | 校验、拦截与审批流程 | [护栏与人工审核](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) | +| MCP 服务器与托管 MCP 工具 | 附加 MCP 支持的能力 | [集成与可观测性](https://developers.openai.com/api/docs/guides/agents/integrations-observability#mcp) | -## 从一个专注的智能体开始 +## 从一个聚焦的智能体开始 -定义最精简的智能体,使其能明确拥有一个任务。仅当你需要独立的职责、不同的指令、不同的工具面或不同的审批策略时,才添加更多智能体。 +定义能够承担明确任务的最小智能体。仅在需要独立所有权、不同指令、不同工具范围或不同审批策略时,才添加更多智能体。 -定义单一智能体 +定义单个智能体 ```javascript import { Agent, tool } from "@openai/agents"; @@ -67,13 +67,13 @@ agent = Agent( ``` -## 塑造指令、交接和输出 +## 调整指令、交接和输出 三个配置选项需要格外注意: -- 从静态 `instructions`。开始。当指导依赖于当前用户、租户或运行时上下文时,切换到动态指令回调,而不是在调用点拼接字符串。 -- 保持 `handoffDescription` 中的 TypeScript 或 `handoff_description` 中的 Python 简短具体,以便路由智能体知道何时选择这个专家。 -- 使用 `outputType` 中的 TypeScript 或 `output_type` 中的 Python,当下游代码需要类型化数据而非自由形式的散文时。 +- 从静态提示开始 `instructions`。当提示内容依赖当前用户、租户或运行时上下文时,应改用动态提示回调,而不是在调用处拼接字符串。 +- 保持 `handoffDescription` 在 TypeScript 或 `handoff_description` 中的内容简短具体,让路由智能体知道何时选用该专家。 +- 使用 `outputType` 在 TypeScript 或 `output_type` (Python)当下游代码需要类型化数据而非自由文本时。 返回结构化输出 @@ -132,13 +132,13 @@ if __name__ == "__main__": ``` -当你想 `prompt` 从 Responses API 引用已存储的提示词配置,而不是在代码中嵌入整个系统提示词时使用。 +使用 `prompt` 当你希望从 Responses API 中引用已存储的提示配置,而不是将完整的系统提示嵌入代码时,可以使用它。 -## 保持本地上下文与模型上下文分离 +## 将本地上下文与模型上下文分开 -SDK允许你将应用状态和依赖项传入运行,而无需将它们发送给模型。请将此用于已验证的用户信息、数据库客户端、记录器和辅助函数等数据。 +SDK 允许你在不将其发送给模型的情况下,将应用状态和依赖项传入运行。可用于经过身份验证的用户信息、数据库客户端、日志记录器和辅助函数等数据。 -将本地上下文传递给工具 +向工具传递本地上下文 ```javascript import { Agent, run, tool } from "@openai/agents"; @@ -207,23 +207,23 @@ if __name__ == "__main__": 重要的边界是: -- 对话历史是模型所看到的内容。 -- 运行上下文是你的代码所看到的内容。 +- 会话历史是模型看到的内容。 +- 运行上下文是你的代码看到的内容。 -如果模型需要某个事实,将其放入指令、输入、检索或工具中。如果只有你的运行时需要它,则将其保存在本地上下文中。 +如果模型需要某个事实,请将其放入 instructions、input、检索内容或工具中。如果仅你的运行时需要它,请保留在本地上下文中。 ## 何时将一个智能体拆分为多个 -当某个专家不应负责完整回复,或不同能力存在实质性差异时,可将智能体拆分。常见原因包括: +当某个智能体不应独自负责完整回复,或各项能力存在明显差异时,可以拆分智能体。常见的拆分原因包括: -- 专家需要不同的工具或 MCP 表面。 -- 专家需要不同的审批策略或护栏。 -- 工作流的一个分支需要不同的模型或输出风格。 -- 你希望在追踪中显式路由,而不是使用单个大提示。 +- 某个智能体需要不同的工具或 MCP 接口。 +- 某个智能体需要不同的审批策略或护栏。 +- 工作流的某个分支需要不同的模型或输出风格。 +- 你希望在追踪中显式路由,而不是使用单个大型提示。 ## 后续步骤 -一旦清晰定义了一个专家智能体,就继续阅读与下一个设计问题匹配的指南。 +一旦清晰地定义了一个专家,就继续查看与下一个设计问题匹配的指南。 @@ -231,19 +231,19 @@ if __name__ == "__main__": - 为此智能体选择模型、默认设置和传输策略。](https://developers.openai.com/api/docs/guides/agents/models) + 为此智能体选择模型、默认值和传输策略。](https://developers.openai.com/api/docs/guides/agents/models) [使用工具 - 添加智能体可直接调用的能力。](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) + 添加智能体可以直接调用的能力。](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) [编排与交接 - 当单个智能体不再够用时,选择专家智能体之间的协作方式。](https://developers.openai.com/api/docs/guides/agents/orchestration) + 当单个智能体不再够用时,选择专家之间的协作方式。](https://developers.openai.com/api/docs/guides/agents/orchestration) [运行智能体 - 了解运行时循环、状态和流式行为。](https://developers.openai.com/api/docs/guides/agents/running-agents) \ No newline at end of file + 了解运行时循环、状态和流式传输行为。](https://developers.openai.com/api/docs/guides/agents/running-agents) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agents/guardrails-approvals.md b/docs/zh/api/docs/guides/agents/guardrails-approvals.md index 9843c3c..5f23ad1 100644 --- a/docs/zh/api/docs/guides/agents/guardrails-approvals.md +++ b/docs/zh/api/docs/guides/agents/guardrails-approvals.md @@ -1,24 +1,24 @@ # 护栏与人工审核 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的Markdown版本可通过在页面URL后追加 `.md` 来获取。 +> 完整的文档索引请参见 [llms.txt](/llms.txt)。你可以在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -使用护栏进行自动检查,并通过人工审查来做出批准决定。两者共同定义运行何时应继续、暂停或停止。 +使用护栏进行自动检查,并使用人工审核进行审批决策。两者共同决定运行应继续、暂停还是停止。 -- **护栏** 自动验证输入、输出或工具行为。 -- **人工审核** 暂停运行,以便人员或策略批准或拒绝敏感操作。 +- **护栏** 自动校验输入、输出或工具行为。 +- **人工审核** 暂停运行,以便由人或策略审批或拒绝敏感操作。 ## 选择合适的控件 -| 使用场景 | 首先使用 | +| 用例 | 起点 | | --------------------------------------------------------------------------------------------- | --------------------------- | -| 在主模型运行前阻止不允许的用户请求 | 输入护栏 | -| 在最终输出离开系统之前验证或编辑 | 输出护栏 | -| 检查函数工具调用的参数或结果 | 工具护栏 | -| 在取消、编辑、shell 命令或敏感 MCP 操作等副作用前暂停 | 人工审批 | +| 在主模型运行之前阻止不允许的用户请求 | 输入护栏 | +| 在最终输出离开系统之前对其进行校验或脱敏 | 输出护栏 | +| 在函数工具调用前后检查参数或结果 | 工具护栏 | +| 在取消、编辑、shell 命令或敏感的 MCP 操作等副作用之前暂停 | 人在回路审批 | ## 添加阻塞式护栏 -当你希望在代价高昂或产生副作用的工作流部分开始之前运行快速验证步骤时,请使用输入护栏。 +当希望在工作流中昂贵或会产生副作用的部分启动之前运行一个快速的验证步骤时,请使用输入护栏。 使用输入护栏阻止请求 @@ -122,11 +122,11 @@ if __name__ == "__main__": ``` -当启动主智能体的成本或风险过高时,请使用阻塞式执行。当低延迟比避免投机性工作更重要时,请使用并行护栏。 +当启动主智能体的代价或风险过高时,使用阻塞执行。当更低的延迟比避免推测性工作更重要时,使用并行护栏。 -## 暂停以进行人工审查 +## Pause for human review -审批是工具调用的人工介入路径。模型仍可决定需要执行某个操作,但运行会暂停,直到你批准或拒绝。 +审批是工具调用的人工介入路径。模型仍然可以判断某个操作是必要的,但运行会暂停,直到你批准或拒绝它。 在敏感操作前暂停以等待审批 @@ -198,66 +198,66 @@ if __name__ == "__main__": ``` -即使审批工具位于工作流的更深处,例如在交接之后或在嵌套的 `agent.asTool()` TypeScript 中的 `agent.as_tool()` Python 调用中,这种相同的中断模式也同样适用。 +即使审批工具位于更深的 工作流 中,例如在某次 交接 之后或嵌套在某个 `agent.asTool()` 的 TypeScript 或 `agent.as_tool()` 的 Python 调用中,同样适用这一中断模式。 ## 审批生命周期 -当工具调用需要审核时,SDK每次都会遵循相同的模式: +当工具调用需要审核时,SDK 每次都遵循相同的模式: -1. 运行记录一个审批中断,而不是执行该工具。 -2. 结果返回 `interruptions` 以及一个可恢复的 `state`. -3. 你的应用程序批准或拒绝待处理项目。 -4. 你从 `state` 继续同一运行,而不是开启新的用户轮次。 +1. 运行会记录一次审批中断,而不是执行该工具。 +2. 结果会返回 `interruptions` 以及一个可恢复的 `state`. +3. 你的应用审批或拒绝待处理项。 +4. 从 `state` 恢复同一运行,而不是开启新的用户轮次。 -如果审查可能需要花费时间,可将其序列化 `state`,并存储,之后再恢复。这仍然是同一运行。 +如果审查可能耗时,请将其序列化 `state`、存储,并在之后恢复。这仍然属于同一轮运行。 ## 工作流边界很重要 -智能体级护栏并非在所有地方都运行: +智能体 级别的护栏并非在所有地方都会运行: - 输入护栏仅对链中的第一个智能体运行。 - 输出护栏仅对生成最终输出的智能体运行。 -- 工具护栏在其附加的函数工具上运行。 +- 工具护栏在它们所附加到的函数工具上运行。 -如果你需要在管理器式工作流中对每次自定义工具调用进行检查,不要只依赖智能体级别的输入或输出护栏。在产生副作用的工具旁边放置验证。 +如果需要在管理者风格的工作流中对每次自定义工具调用进行检查,不要仅依赖智能体级别的输入或输出护栏。请将校验逻辑放在创建副作用的工具旁边。 -## 执行前审查网络安全操作 +## 在执行前审查网络安全操作 -对于经授权的网络安全工作流,请评估每个敏感的工具调用 -在其执行之前。使用工具护栏和批准中断来强制执行 -在发生副作用边界处书面的参与范围: +在已获授权的网络安全工作流中,需在每次敏感工具调用执行前对其进行评估。 +使用工具护栏和审批中断机制,在产生副作用的边界处强制执行 +书面约定的评估范围: -1. 对照批准的范围内检查提议的目标、操作、工具参数、调用身份以及 - 参与窗口。 -2. 向独立的政策组件或审查者提供确切提议的操作以及 - 仅评估所需的上下文。 -3. 拒绝范围外的主机、凭证盗窃、持久化、数据外泄、 - 破坏性修改、生产访问以及尝试绕过政策的行为。 -4. 在工具运行前,暂停模糊或高风险操作以获取明确的人工批准。 - 工具运行。 -5. 强制独立的文件系统、网络、身份和项目边界, - 记录决策和执行结果,如果审查超时 - 或不可用,则失败关闭。 +1. 核对提议的目标、操作、工具参数、调用身份以及 + 参与窗口与已批准范围是否一致。 +2. 将完全相同的提议操作和 + 仅供评估所需的上下文交给独立的策略组件或审核者。 +3. 拒绝超出范围的主机、凭据窃取、持久化、数据外泄、 + 破坏性变更、生产访问以及试图绕过策略的行为。 +4. 在工具运行前,将模糊或高风险操作暂停,以等待明确的人工审批 + 后再继续。 +5. 强制实施独立的文件系统、网络、身份和项目边界, + 记录决策和执行结果,并在审核超时 + 或不可用时采用失败关闭策略。 Responses API 和 Agents SDK 应用不会自动继承 -[Codex 自动审查](https://developers.openai.com/codex/sandboxing/auto-review)。请在你的自有工具框架中添加审查与执行 -。开源 -[Codex 审查者策略](https://github.com/openai/codex/blob/main/codex-rs/core/src/guardian/policy.md) -演示了一种方法。请参阅 [模型与可信访问](https://developers.openai.com/codex/cyber-safety) -以获取经批准的模型访问,以及 [推荐配置](https://developers.openai.com/codex/cyber-safety/recommended-configuration) -以进行安全的交互设置。 +[Codex Auto-review](https://developers.openai.com/codex/sandboxing/auto-review)。请将审核和强制执行机制添加到你自己的框架中。 +下面的 +[开源 Codex reviewer 策略](https://github.com/openai/codex/blob/main/codex-rs/core/src/guardian/policy.md) +展示了一种实现思路。访问 [Models and Trusted Access](https://developers.openai.com/codex/cyber-safety) +以了解经审核的模型访问方式,并参考 [Recommended configuration](https://developers.openai.com/codex/cyber-safety/recommended-configuration) +完成安全的接入配置。 -## 流式传输和延迟审查使用相同的状态模型 +## 流式输出和延迟审阅使用相同的状态模型 -流式传输不会创建单独的审批系统。如果流式运行暂停,请等待其稳定,检查 `interruptions`,解决审批事项,并从相同的 `state`。处继续。如果审查稍后进行,请存储序列化状态,并在决策到达时继续同一运行。 +流式传输不会创建单独的审批系统。如果某个流式运行的暂停,请等待其稳定后,检查 `interruptions`,解决审批问题,并从同一个 `state`。处恢复。如果审批稍后才发生,请存储序列化后的状态,并在决策到达时继续同一个运行。 -## 后续步骤 +## Next steps -一旦控制边界明确,请继续阅读涵盖其运行时或工具界面的指南。 +一旦控制边界清晰,就可以继续阅读涵盖其运行时或工具表面的指南。 - [运行智能体 + [运行 智能体 @@ -266,7 +266,7 @@ Responses API 和 Agents SDK 应用不会自动继承 - 了解暂停的运行会将哪些结果返回给你的应用程序。](https://developers.openai.com/api/docs/guides/agents/results) + 了解暂停的运行会向你的应用返回哪些结果。](https://developers.openai.com/api/docs/guides/agents/results) [使用工具 diff --git a/docs/zh/api/docs/guides/agents/integrations-observability.md b/docs/zh/api/docs/guides/agents/integrations-observability.md index 978d304..9b9021c 100644 --- a/docs/zh/api/docs/guides/agents/integrations-observability.md +++ b/docs/zh/api/docs/guides/agents/integrations-observability.md @@ -1,22 +1,22 @@ # 集成与可观测性 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -工作流形态明确后,接下来的问题是哪些外部表面应位于智能体循环内部,以及你如何在运行时检查实际发生了什么。 +在 工作流 形态明确之后,接下来要思考的问题是:哪些外部接口应该放进 智能体 循环中,以及如何在运行时观察实际发生的情况。 -## 选择什么在 SDK 中 +## 选择SDK 中的内容 -| 需要 | 从以下开始 | 原因 | +| 需求 | 起始方式 | 原因 | | --------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------- | -| 让智能体访问公共的、远程托管的 MCP 工具 | SDK 中的托管 MCP 工具 | 模型可以通过托管界面调用远程 MCP 服务器 | -| 从你的运行时连接本地或私有 MCP 服务器 | SDK 管理的 MCP 服务器,通过 stdio 或流式 HTTP | 你的运行时拥有连接、审批和网络边界的控制权 | -| 调试提示词、工具、交接或审批 | 内置追踪 | 追踪显示端到端的记录,之后你再正式化评估 | +| 允许智能体访问公共的、远程托管的 MCP 工具 | SDK中的托管 MCP 工具 | 模型可以通过托管接口调用远程 MCP 服务器 | +| 从你的运行时连接本地或私有 MCP 服务器 | 通过 stdio 或可流式 HTTP 使用SDK托管的 MCP 服务器 | 由你的运行时管理连接、审批和网络边界 | +| 调试提示词、工具、交接或审批 | 内置追踪 | 在正式构建评测之前,追踪可显示端到端记录 | -工具能力语义仍然存在于 [使用工具](https://developers.openai.com/api/docs/guides/tools)。中。本页重点介绍 SDK 特定的 MCP 连接与可观测性循环。 +工具能力的语义仍位于 [使用工具](https://developers.openai.com/api/docs/guides/tools)。本页重点介绍SDK专属的 MCP 连接与可观测性回路。 ## MCP -当远程服务器应通过模型界面运行时,请使用托管 MCP 工具。 +当远程服务器应通过模型表面运行时,请使用托管 MCP 工具。 附加托管 MCP 服务器 @@ -55,7 +55,7 @@ agent = Agent( ``` -当你的应用应直接连接到 MCP 服务器时,请使用本地传输方式。 +当你的应用程序应直接连接到 MCP 服务器时,请使用本地传输。 连接本地 MCP 服务器 @@ -117,28 +117,28 @@ if __name__ == "__main__": ``` -实际的分工如下: +实际划分如下: -- 使用 **托管 MCP** 用于适合平台信任模型的公共远程服务器。 -- 使用 **本地或私有 MCP** 当你的运行时应该拥有连接性、过滤或审批权限时。 +- 使用 **托管 MCP** 处理符合平台信任模型的公共远程服务器。 +- 使用 **本地或私有 MCP** 当你的运行时需要掌控连接、过滤或审批时。 -关于平台级概念、信任模型和产品支持说明,请以 [MCP 与 Connectors](https://developers.openai.com/api/docs/guides/tools-connectors-mcp) 作为权威参考。 +对于平台级概念、信任模型和产品支持说明,请参阅 [MCP 和 Connectors](https://developers.openai.com/api/docs/guides/tools-connectors-mcp) 作为权威参考。 ## 追踪 -追踪功能内置于 Agents SDK,并在正常的服务端 SDK 路径中默认启用。每次运行都可以发出模型调用、工具调用、交接、护栏和自定义追踪片段的结构化记录,你可以查看这些记录于 [追踪仪表板](https://platform.openai.com/traces). +追踪内置于 Agents SDK 中,并在默认的 服务端 SDK 路径中默认开启。每次运行都可以发出模型调用、工具调用、交接、护栏以及自定义 span 的结构化记录,你可以在 [追踪仪表板](https://platform.openai.com/traces). -默认追踪通常提供以下内容: +默认的 追踪 通常会为你提供: -- 整个运行或工作流 +- 整体运行或工作流 - 每次模型调用 - 工具调用及其输出 - 交接和护栏 -- 你在工作流周围包裹的任何自定义跨度 +- 你在工作流周围包裹的任何自定义 span -如果你需要更少的追踪,请使用SDK级别或每次运行的追踪控制,而不是从工作流中移除所有可观测性。 +如果需要更少的追踪,请使用 SDK 级别或每次运行的追踪控制,而不是完全移除该工作流的可观测性。 -在一个追踪中封装多次运行 +将多个运行包装在一个追踪中 ```javascript import { Agent, run, withTrace } from "@openai/agents"; @@ -183,14 +183,14 @@ if __name__ == "__main__": ``` -使用追踪有两个用途: +将追踪用于两个用途: -- 调试一次工作流运行,并理解发生了什么。 -- 将更高信号的示例输入到 [智能体工作流评估](https://developers.openai.com/api/docs/guides/agent-evals) ,一旦你准备好系统地评分行为时。 +- 调试一次工作流运行并了解发生了什么。 +- 将更高信号的示例输入到 [智能体 工作流评估](https://developers.openai.com/api/docs/guides/agent-evals) 中,以便在你准备好系统性地评估行为时使用。 -## 后续步骤 +## 下一步 -外部接口接入后,继续阅读涵盖能力设计、审查边界或评估的指南。 +外部接口接入完成后,可继续阅读涵盖能力设计、审查边界或评估的指南。 @@ -198,14 +198,14 @@ if __name__ == "__main__": - 了解托管工具、函数工具和智能体即工具如何与 MCP 结合使用。](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) - [护栏和人工审查 + 了解托管工具、函数工具,以及作为工具使用的 智能体 如何与 MCP 配合使用。](https://developers.openai.com/api/docs/guides/tools#usage-in-the-agents-sdk) + [护栏与人工审查 - 在敏感能力周围添加批准或验证边界。](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) - [智能体工作流评估 + 为敏感能力添加审批或校验边界。](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) + [智能体 工作流 评估 - 行为稳定后,从一次性追踪转向可重复的评估。](https://developers.openai.com/api/docs/guides/agent-evals) \ No newline at end of file + 行为稳定后,从单次追踪转向可复用的评分流程。](https://developers.openai.com/api/docs/guides/agent-evals) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agents/models.md b/docs/zh/api/docs/guides/agents/models.md index 663da4d..1f3e043 100644 --- a/docs/zh/api/docs/guides/agents/models.md +++ b/docs/zh/api/docs/guides/agents/models.md @@ -1,18 +1,18 @@ # 模型与提供商 -> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可以通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参见 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 -每次 SDK 运行最终都会解析出一个模型和一个传输层。大多数应用应保持这一设置简单直接:明确选择模型,默认使用标准的 OpenAI 路径,仅在 工作流 确实需要时才使用提供商或传输层覆盖。 +每次 SDK 运行最终都会解析出一个模型和一个传输方式。大多数应用应保持这种配置简洁直观:明确选择模型,默认使用标准的 OpenAI 路径,仅在 工作流 确实需要时才使用提供商或传输方式的覆盖配置。 -## 从显式模型选择开始 +## 从显式选择模型开始 -在生产环境中,应优先选择明确的模型,而非你的 SDK 版本随附的运行时默认模型。 +在生产环境中,应优先明确选择模型,而不要依赖你的 SDK 发行版本自带的运行时默认模型。 -- 设置 `model` 在某个智能体上设置,当该专业智能体始终需要不同的质量、延迟或成本配置时。 -- 设置运行级默认值,用以让一个工作流同时覆盖多个智能体设置。 -- 设置 `OPENAI_DEFAULT_MODEL` 当你希望为未指定设置的智能体提供一个进程级默认值时。 `model`. +- 设置 `model` 在某个智能体上设置,当该专家智能体持续需要不同的质量、延迟或成本配置时。 +- 当某个工作流需要同时覆盖多个智能体时,设置运行级默认值。 +- 设置 `OPENAI_DEFAULT_MODEL` 当你希望为省略了该设置的智能体提供进程级回退时, `model`. -智能体和每次运行的模型设置 +为每个智能体和每次运行设置模型 ```javascript import { Agent, Runner } from "@openai/agents"; @@ -74,62 +74,62 @@ if __name__ == "__main__": ``` -对于大多数新的 SDK 工作流,从 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 开始,仅当延迟或成本足够重要时才迁移到较小的变体。使用平台范围的 [模型指导](https://developers.openai.com/api/docs/guides/latest-model) 页面获取当前的模型选择建议。 +对于大多数新的SDK工作流,请从 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 开始,只有在延迟或成本足够重要时再切换到更小的变体。请参考平台级的 [模型选型指南](https://developers.openai.com/api/docs/guides/latest-model) 页面,获取最新的模型选择建议。 ## 选择最简单的默认策略 -| 如果你需要 | 从以下开始 | 为什么 | +| 如果需要 | 从…开始 | 原因 | | ---------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------ | -| 每个专家各用一个显式模型 | 设置 `model` 在每个 智能体 上 | 工作流 在代码和追踪中保持可读性 | -| 整个流程中使用一个回退模型 | `OPENAI_DEFAULT_MODEL` | 省略该设置的 智能体 `model` 仍可预测地解析 | -| 单个 工作流-级别的覆盖 | 运行级别的默认值 | 你可以在不编辑每个 智能体 的情况下,为脚本、工作者或环境切换模型 | -| 同一 工作流 中使用不同规模的模型 | 混合每个 智能体 的模型 | 快速分诊 智能体 与较慢的深度专家可以清晰共存 | +| 每个专家智能体使用一个明确模型 | 在每个 `model` 智能体上设置 | 工作流在代码和追踪中保持可读 | +| 整个流程共用的一个回退 | `OPENAI_DEFAULT_MODEL` | 省略了 的智能体 `model` 仍然可以稳定解析 | +| 工作流级别的一个覆盖 | 运行级别的默认设置 | 你可以在不修改每个智能体的情况下,为脚本、worker 或环境切换模型 | +| 同一工作流中使用不同的模型规模 | 混合每个智能体的模型 | 一个快速的分类智能体和一个较慢的深度专家智能体可以干净地共存 | -如果你的团队在意确切默认值,不要依赖 SDK 的回退。请自行设置。 +如果你的团队在意准确的默认值,不要依赖 SDK 回退。请自行设置。 -## 提供方与传输 +## Providers and transport -| 需要 | 从以下开始 | +| 需求 | 从…开始 | | ------------------------------------------------------- | ----------------------------------------------------------------- | -| 标准 SDK 在 OpenAI 上运行 | 默认的 OpenAI 提供商路径 | -| 通过套接字进行许多重复的 Responses 模型往返 | SDK 中的 Responses WebSocket 传输 | -| 非 OpenAI 模型或混合提供商栈 | 特定语言 SDK 文档中的提供商或适配器界面 | +| 标准 SDK 运行于 OpenAI | 默认的 OpenAI provider 路径 | +| 通过 socket 进行的大量重复 Responses 模型往返调用 | SDK 中的 Responses WebSocket 传输 | +| 非 OpenAI 模型或混合 provider 栈 | 特定语言 SDK 文档中的 provider 或 adapter 接口 | -有两个区别值得注意: +Two distinctions matter: - Responses WebSocket 传输仍然使用常规的文本与工具 智能体 循环。它与语音会话路径是分开的。 -- 通过 WebRTC 或 WebSocket 的实时音频会话用于低延迟的语音或图像交互。请参考 [Voice 智能体](https://developers.openai.com/api/docs/guides/voice-agents) 和 [live audio API guide](https://developers.openai.com/api/docs/guides/realtime) 了解该路径的更多信息。 +- 通过 WebRTC 或 WebSocket 的实时音频会话用于低延迟语音或图像交互。使用 [语音 智能体](https://developers.openai.com/api/docs/guides/voice-agents) 以及 [实时音频 API 指南](https://developers.openai.com/api/docs/guides/realtime) 了解该路径。 -具体的提供方配置、提供方生命周期管理以及传输辅助 API 仍是各语言特有的内容。请将这些细节保留在 SDK 文档中,而不是在此重复。 +精确的 provider 配置、provider 生命周期管理以及传输层辅助 API 仍属于语言特定的资料。这些细节请保留在 SDK 文档中,而不是在此处重复。 ## 模型设置、提示词与功能支持 -模型选择只是运行时契约的一部分。 +模型选择只是运行时合约的一部分。 -- 使用 `modelSettings` (TypeScript)或 `model_settings` (Python)进行微调,例如推理努力、详细程度和工具行为。 -- 使用 `prompt` 当你希望用存储的提示配置来控制运行,而不是在代码中嵌入完整系统提示时。 -- 某些 SDK 功能依赖 OpenAI Responses 路径而非较旧的兼容接口,因此当需要高级工具加载或传输功能时,请查阅 SDK 文档。 +- 使用 `modelSettings` 在 TypeScript 中,或 `model_settings` 在 Python 中用于调优推理强度、冗长度和工具行为等设置。 +- 使用 `prompt` 当你希望使用存储的提示词配置来控制运行,而不是将完整的系统提示嵌入代码中时。 +- 某些 SDK 功能依赖 OpenAI Responses 路径而非旧版兼容接口,因此当你需要高级的工具加载或传输特性时,请查阅 SDK 文档。 -当模型契约对该专家而言是其固有属性时,应使其与智能体定义保持一致。仅当一组智能体需要共享相同的运行时选择时,才将其移至工作流级别的默认设置。 +将模型契约保持在 智能体 定义附近,前提是该契约是该智能体所固有的。只有当一组 智能体 应该共享相同的运行时选择时,才将其移至 工作流 级别的默认值。 ## 后续步骤 -运行时契约明确后,继续阅读与 工作流设计其余部分匹配的指南。 +一旦运行时契约清晰,就可以继续阅读与 工作流 其余设计匹配的指南。 - [智能体定义 + [智能体 定义 - 保持模型选择与每个专家的职责对齐。](https://developers.openai.com/api/docs/guides/agents/define-agents) + 让模型选择与每个专家的职责保持一致。](https://developers.openai.com/api/docs/guides/agents/define-agents) [运行 智能体 - 了解传输和模型选择如何影响运行时循环。](https://developers.openai.com/api/docs/guides/agents/running-agents) + 了解传输方式和模型选择如何影响运行时循环。](https://developers.openai.com/api/docs/guides/agents/running-agents) [外部模型 - 当混合模型栈很重要时,比较更广泛的提供商选项。](https://developers.openai.com/api/docs/guides/external-models) \ No newline at end of file + 在混合模型栈至关重要时,对比更广泛的提供商选项。](https://developers.openai.com/api/docs/guides/external-models) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agents/orchestration.md b/docs/zh/api/docs/guides/agents/orchestration.md index 9ddd5be..6964512 100644 --- a/docs/zh/api/docs/guides/agents/orchestration.md +++ b/docs/zh/api/docs/guides/agents/orchestration.md @@ -1,21 +1,21 @@ # 编排与交接 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -当不同专业角色应各自负责任务的不同部分时,多智能体工作流非常有用。首要的设计决策是确定在工作流的每个分支中,由谁负责最终面向用户的回答。 +Multi-智能体 workflows are useful when specialists should own different parts of the job. The first design choice is deciding who owns the final user-facing answer at each branch of the 工作流. ## 选择编排模式 -| 模式 | 使用场景 | 效果 | +| 模式 | 使用场景 | 行为 | | --------------- | ----------------------------------------------------------------------------- | ---------------------------------------- | -| 交接 | 由专家接管该工作分支的对话 | 控制权移交给专家智能体 | -| 作为工具的智能体 | 由管理者保持控制,将专家作为有界能力调用 | 管理者保留回复的所有权 | +| 交接 | 应由某个专家智能体接管该工作分支的对话 | 控制权移交给该专家智能体 | +| 智能体作为工具 | 应由一个管理者持续掌控,并将专家作为受限能力调用 | 管理者保持对回复的所有权 | -## 使用交接进行委托所有权管理 +## 使用交接来委派所有权 -交接是最清晰的适用场景,即应由某个专家负责下一个响应,而不仅仅是在后台提供帮助。 +当应由某个专家完全主导下一轮回复、而非仅仅在幕后提供协助时,交给交接是最直接的方案。 -使用交接进行委派 +通过交接进行委派 ```javascript import { Agent, handoff } from "@openai/agents"; @@ -42,17 +42,17 @@ triage_agent = Agent( ``` -保持路由界面清晰易读: +保持路由层级的清晰可读: -- 给每个专家分配一个狭窄的职责。 -- 保持 `handoffDescription` 用 TypeScript 或 `handoff_description` 用 Python 编写时简短具体。 -- 仅当下一个分支确实需要不同的指令、工具或策略时才进行拆分。 +- 为每个智能体分配一个明确且范围有限的职责。 +- 在 `handoffDescription` TypeScript 中或 `handoff_description` 中保持 Python 的指令简洁、具体。 +- 仅在下一个分支确实需要不同的指令、工具或策略时才进行拆分。 -在高级场景中,交接也可以携带结构化元数据或过滤后的历史记录。那些确切的 API 保留在 SDK 文档中,因为它们的配置方式因语言而异。 +在更高级的用法中,交接 也可以携带结构化元数据或经过筛选的历史记录。这些具体的 API 会在 SDK 文档中介绍,因为接线方式因语言而异。 -## 将智能体用作工具,实现管理器风格的工作流 +## 将 智能体 用作管理者式工作流的工具 -使用 `agent.asTool()` 在 TypeScript 中或 `agent.as_tool()` 在 Python 中,当主智能体应负责最终答案并调用专家作为助手时。 +使用 `agent.asTool()` 在 TypeScript 中,或 `agent.as_tool()` 在 Python 中,当主智能体应继续负责最终答复并将这些专家作为辅助工具调用时。 将专家作为工具调用 @@ -95,21 +95,21 @@ main_agent = Agent( ``` -在以下情况下,这通常是更好的选择: +在以下情况下,这通常是更合适的选择: -- 经理应综合出最终答案 -- 专家正在执行有界任务,如摘要或分类 -- 你希望有一个稳定的外部工作流,嵌套专家调用,而不是交接所有权 +- 由管理器综合得出最终答案 +- 专家正在执行有界任务,例如摘要或分类 +- 你希望拥有一个稳定的外部工作流,并在其中嵌套专家调用,而不是进行所有权交接 -## 仅当契约发生变化时才添加专家 +## 仅在合约变更时添加专家 -只要可以,就从单个智能体开始。只有当专家能显著改善能力隔离、策略隔离、提示清晰度或追踪可读性时,才添加专家。 +尽可能从一个智能体开始。只有在实质性改善能力隔离、策略隔离、提示清晰度或追踪可读性时,才添加专门的智能体。 -过早拆分会产生更多提示、更多追踪和更多审批面,却不一定会让工作流变得更好。 +过早拆分会产生更多的提示、更多的追踪和更多的审批界面,却未必让工作流变得更好。 -## 后续步骤 +## 下一步 -一旦所有权模式明确,继续阅读涵盖相邻运行时或状态问题的指南。 +一旦所有权模式清晰,就继续阅读涵盖相邻运行时或状态问题的指南。 @@ -122,7 +122,7 @@ main_agent = Agent( - 了解交接和工具在运行中的行为。](https://developers.openai.com/api/docs/guides/agents/running-agents) + 了解交接和工具在运行中的行为方式。](https://developers.openai.com/api/docs/guides/agents/running-agents) [结果与状态 diff --git a/docs/zh/api/docs/guides/agents/results.md b/docs/zh/api/docs/guides/agents/results.md index 2d3ecfe..a24bc35 100644 --- a/docs/zh/api/docs/guides/agents/results.md +++ b/docs/zh/api/docs/guides/agents/results.md @@ -1,70 +1,70 @@ # 结果与状态 -> 完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -当你运行一个智能体时,结果不仅仅是最终答案。它还是交接边界、下一轮延续表面,以及运行暂停等待审查时的可恢复快照。 +当你运行一个智能体时,结果不仅仅是最终答案。它还包括交接边界、下一个回合的延续面,以及当一次运行暂停等待审核时的可恢复快照。 -## 选择你所需的结果表面 +## 选择你需要的结果界面 大多数应用只需要一小部分结果属性: -| 如果需要 | 使用 | +| 如果你需要 | 使用 | | ---------------------------------------------------- | ----------------------------------------------------------------------------------- | -| 向用户显示的最终答案 | `finalOutput` in TypeScript 或 `final_output` in Python | -| 本地可重放历史 | `history` in TypeScript 或 `to_input_list()` in Python | -| 通常应拥有下一轮对话的专家 | `lastAgent` in TypeScript 或 `last_agent` in Python | -| OpenAI 管理的响应链 | `lastResponseId` in TypeScript 或 `last_response_id` in Python | -| 待处理审批和可恢复的快照 | `interruptions` plus `state` in TypeScript 或 `to_state()` in Python | +| 向用户展示的最终答案 | `finalOutput` 使用 TypeScript,或 `final_output` 使用 Python | +| 本地可回放历史记录 | `history` 使用 TypeScript,或 `to_input_list()` 使用 Python | +| 通常应在下一轮主导对话的专家智能体 | `lastAgent` 使用 TypeScript,或 `last_agent` 使用 Python | +| OpenAI 托管的响应链 | `lastResponseId` 使用 TypeScript,或 `last_response_id` 使用 Python | +| 待处理审批与可恢复快照 | `interruptions` 加上 `state` 使用 TypeScript,或 `to_state()` 使用 Python | -这些是需要优先学习的指南级界面。更丰富的运行项、原始模型响应和详细诊断信息仍属于SDK文档和参考资料。 +这些是你需要首先学习的使用指南层面的接口。更丰富的运行项、原始模型响应以及详细的诊断信息仍应查阅 SDK 文档和参考资料。 -## 下一轮应携带的内容 +## 带入下一轮的上下文 -以符合你的延续策略的方式使用结果: +以匹配你的延续策略的方式使用结果: -- 如果你的应用拥有完整的本地历史记录,请复用 `history` (TypeScript)或 `to_input_list()` (Python)。 -- 如果你使用的是会话,请继续传递同一会话,让 SDK 为你加载并持久化历史记录。 -- 如果你使用的是服务端管理的 延续,仅传递新的用户输入并复用存储的 ID,而不是重放完整对话记录。 -- 交接后,请复用 `lastAgent` (TypeScript)或 `last_agent` (Python),以便该专家在下一次交互中继续掌控。 +- 如果你的应用拥有完整的本地历史记录,请复用 `history` 在 TypeScript 中或 `to_input_list()` 在 Python 中。 +- 如果使用 session,请保持传入相同的 session,让 SDK 为你加载并持久化历史记录。 +- 如果使用服务端管理的 延续,只需传入新的用户输入,并复用已存储的 ID,而不是重放整个对话记录。 +- 在交接之后,保留 `lastAgent` 在 TypeScript 中或 `last_agent` (在 Python 中),以便该专家智能体在下一轮继续掌控对话。 -## 被中断的运行返回状态,而非最终答案 +## 中断的运行返回状态,而非最终答案 -审批流程是结果被有意保持不完整的主要情形。 +审批流是结果故意不完整的主要用例。 -- `finalOutput` 在 TypeScript 或 `final_output` 在 Python 中可以 - 保持为空,因为运行尚未真正结束。 -- `interruptions` 告诉你哪些待处理的工具调用需要做出决策。 -- `state` 在 TypeScript 或 `to_state()` 在 Python 中是保存的 - 快照,你在批准或拒绝那些 - 条目后将其传回运行时。 +- `finalOutput` 在 TypeScript 中或 `final_output` 在 Python 中可以 + 保持为空,因为该运行实际上还未结束。 +- `interruptions` 会告诉你哪些待处理的工具调用需要做出决策。 +- `state` 在 TypeScript 中或 `to_state()` 在 Python 中是保存的 + 快照,你需要在批准或拒绝这些 + 项之后将其传回运行时。 -当审查可能稍后进行而非在同一个请求中发生时,你序列化的正是这同一状态表面。 +同一状态面也是你在审查可能稍后(而非在同一请求中)发生时需要序列化的内容。 -## 更丰富的条目与诊断表面 +## 更丰富的项目和诊断界面 -SDK 还为需要超越上述高级接口的应用程序提供了更丰富的运行项和诊断信息,包括项级工具和 交接 记录、原始模型响应、护栏 结果以及使用详情。 +SDK 还对外暴露了更丰富的运行条目与诊断信息,适用于需要超出上述高层接口的应用场景。这包括条目级的工具和交接记录、原始模型响应、护栏结果,以及用量详情。 -这些对于审计、自定义界面和深度调试很有用,但并非本网站上大多数开发者首先需要学习的内容。 +这些对于审计、自定义界面和深度调试非常有用,但并不需要成为大多数开发者在本站首先学习的内容。 -## 后续步骤 +## 下一步 -一旦你知道了哪些结果层面很重要,接下来就继续阅读说明这些层面是如何生成或被检查的指南。 +确定哪些结果呈现层重要之后,请继续阅读相关指南,了解这些呈现层是如何生成或检查的。 - [运行 智能体 + [运行智能体 Connect result handling back to the runtime loop and continuation strategy.](https://developers.openai.com/api/docs/guides/agents/running-agents) - [护栏和人工审核 + [护栏与人工审核 - 了解暂停运行如何返回中断和可恢复状态。](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) - [集成和可观测性 + 了解暂停的运行如何返回中断以及可恢复的状态。](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) + [集成与可观测性 - 当你需要检查更丰富的 工作流 记录时,请使用追踪。](https://developers.openai.com/api/docs/guides/agents/integrations-observability) \ No newline at end of file + 当你需要查看更丰富的工作流记录时,请使用追踪。](https://developers.openai.com/api/docs/guides/agents/integrations-observability) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/agents/running-agents.md b/docs/zh/api/docs/guides/agents/running-agents.md index b825b16..d9febe0 100644 --- a/docs/zh/api/docs/guides/agents/running-agents.md +++ b/docs/zh/api/docs/guides/agents/running-agents.md @@ -1,33 +1,33 @@ # 运行智能体 -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后附加 `.md` 来获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。如需获取文档页面的 Markdown 版本,可在页面 URL 末尾追加 `.md` 。 -定义智能体只是设置步骤。运行时的问题在于单次运行执行什么、下一轮如何延续,以及工作流在因审批或工具工作而暂停时如何表现。 +定义一个智能体只是准备工作。运行时真正需要关心的问题是:单次运行会做什么、下一个轮次如何延续,以及当工作流因为审批或工具调用而暂停时的行为表现。 ## 智能体循环 -一次 SDK 运行是一个应用级别的回合。运行器会持续循环,直到达到真正的停止点: +一次 SDK 运行就是一次应用层回合。运行器会持续循环,直到到达真正的停止点为止: 1. 使用准备好的输入调用当前智能体的模型。 -2. 检查模型的输出。 -3. 如果模型产生了工具调用,执行这些调用并继续。 -4. 如果模型交接给了另一位专家,则切换智能体并继续。 -5. 如果模型产生了最终答案且无需更多工具操作,则返回结果。 +2. 检查模型输出。 +3. 如果模型产生了工具调用,则执行这些调用并继续。 +4. 如果模型交接给了其他专家,则切换智能体并继续。 +5. 如果模型在不再有工具工作时给出了最终答案,则返回结果。 -这个循环是SDK背后的核心概念。工具、交接、审批和流式传输都构建在其之上,而非替代它。 +这个循环就是 SDK 背后的核心概念。工具、交接、审批和流式传输都是在它的基础上构建的,而不是取代它。 ## 选择一种对话策略 -有四种常见方式可以将状态带入下一轮: +将状态延续到下一轮的方式通常有以下四种: -| 策略 | 状态存储位置 | 最适合 | 下一轮你传入的内容 | +| 策略 | 状态所在位置 | 适用场景 | 下一轮传入的内容 | | ------------------------------------------------------------------------------------------------------------------ | ------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------- | -| `result.history` 使用 TypeScript 或 `result.to_input_list()` 使用 Python | 你的应用 | 小型聊天循环和最大控制力 | 可重放的完整历史 | -| `session` | 你的存储加上 SDK | 持久化聊天状态、可恢复运行以及由你控制的存储 | 同一个会话 | -| `conversationId` | OpenAI Conversations API | 跨工作进程或服务共享的服务端托管状态 | 同一个对话 ID,且只传新的那一轮 | -| `previousResponseId` 使用 TypeScript 或 `previous_response_id` 使用 Python | OpenAI Responses API | 从一个响应到下一个响应最轻量的服务端延续 | 最后一个响应 ID,且只传新的那一轮 | +| `result.history` 在 TypeScript 或 `result.to_input_list()` 在 Python 中 | 你的应用 | 小型对话循环和最大程度的控制 | 可重放的就绪历史 | +| `session` | 你的存储加上 SDK | 持久的聊天状态、可恢复的运行,以及你可掌控的存储 | 同一个会话 | +| `conversationId` | OpenAI Conversations API | 跨 worker 或服务共享的服务端托管状态 | 同一个会话 ID,仅包含新一轮 | +| `previousResponseId` 在 TypeScript 或 `previous_response_id` 在 Python 中 | OpenAI Responses API | 从一个响应到下一个响应最轻量的服务端托管延续 | 上一个响应 ID,仅包含新一轮 | -在大多数应用中,每个对话选择一种策略。将本地回放与服务端管理状态混合使用可能会重复上下文,除非你有意协调这两层。 +在大多数应用中,每次对话应选择一种策略。除非你刻意协调两层,否则混合本地回放和服务端托管状态可能会导致上下文重复。 使用会话持久化多轮状态 @@ -84,9 +84,9 @@ if __name__ == "__main__": ``` -当你需要持久记忆、可恢复的审批流程或由你的应用控制的存储时,会话是最佳默认选择。 +当你需要持久化记忆、可恢复的审批流程,或由你的应用自行控制的存储时,会话是最佳默认选择。 -续用服务端管理状态 +继续了解服务端托管状态 ```javascript import { Agent, run } from "@openai/agents"; @@ -142,13 +142,13 @@ if __name__ == "__main__": ``` -当多个系统应共享一个命名对话时,使用 `conversationId` 。使用 `previousResponseId` (在 TypeScript 中)或 `previous_response_id` (在 Python 中)以获得最经济的响应间延续选项。 +使用 `conversationId` 可以在多个系统之间共享同一个命名对话。使用 `previousResponseId` (TypeScript)或 `previous_response_id` (Python)可在逐条响应之间获得成本最低的延续选项。 -## 流式运行增量输出 +## 增量流式运行 -流式传输使用相同的智能体循环和相同的状态策略。唯一区别是你在运行仍在进行时消耗事件。 +流式传输使用相同的智能体循环和相同的状态策略。唯一的区别在于,你会在运行仍在进行的过程中消费事件。 -按文本到达流式传输运行 +在文本到达时流式传输运行 ```javascript import { Agent, run } from "@openai/agents"; @@ -208,24 +208,24 @@ if __name__ == "__main__": ``` -三个实用规则很重要: +三个实用的规则值得关注: -- 等待流结束,再将该运行视为已落定。 -- 如果运行因等待审批而暂停,请先解决 `interruptions` 再从 `state` 恢复,而不是开启新一轮用户对话。 -- 如果你在运行中途取消了一个流,请从 `state` 恢复未完成的对话,以便稍后继续同一轮次。 +- 在将本次运行视为已结束之前,请等待流处理完成。 +- 如果运行因等待审批而暂停,请处理后从 `interruptions` 继续,而不是发起全新的用户轮次。 `state` ,而不是发起全新的用户轮次。 +- 如果在轮次中途取消了流,请从 `state` 继续,以便稍后接着同一个轮次进行。 ## 有意识地处理暂停和失败 -两大类非正常路径结果需要关注: +两类重要的非正常路径结果: -- **运行时或验证失败** 如最大轮次限制、护栏异常或工具错误。 -- **预期暂停** 如人工审批请求,此时运行被有意中断,并应稍后从相同状态恢复。 +- **运行时或校验失败** 例如最大轮次限制、护栏 异常或工具错误。 +- **预期的暂停** 例如人工审批请求,在这种情况下运行会被有意中断,之后应从同一状态恢复。 -将审批视为暂停的运行,而不是新的回合。这一区别使回合数、历史记录以及服务端管理的延续 ID 保持一致。 +将审批视为暂停的运行,而不是新的轮次。这一区分能使轮次计数、历史记录以及服务端管理的延续 ID 保持一致。 ## 后续步骤 -一旦运行时循环清晰,接下来就进入与你需要设计的下一个工作流边界相匹配的指南。 +一旦运行时循环清晰,就可以继续阅读与你需要设计的下一个工作流边界相匹配的指南。 @@ -239,9 +239,9 @@ if __name__ == "__main__": - 决定多个专家如何在同一个运行时循环内协作。](https://developers.openai.com/api/docs/guides/agents/orchestration) + 决定多个智能体如何在同一个运行时循环内协同工作。](https://developers.openai.com/api/docs/guides/agents/orchestration) [护栏与人工审核 - 在不打断回合连续性的情况下添加验证和批准暂停。](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) \ No newline at end of file + 在不打断轮次连续性的前提下,添加校验和审批暂停。](https://developers.openai.com/api/docs/guides/agents/guardrails-approvals) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/amazon-bedrock.md b/docs/zh/api/docs/guides/amazon-bedrock.md index 69310c2..7af3263 100644 --- a/docs/zh/api/docs/guides/amazon-bedrock.md +++ b/docs/zh/api/docs/guides/amazon-bedrock.md @@ -1,54 +1,54 @@ # Amazon Bedrock 中的 OpenAI 模型 -> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 -Amazon Bedrock 通过 AWS 托管的 OpenAI 使受支持的模型可用 -基础设施。当你的组织希望 -将采购、身份、区域控制及相关云操作保留在 -AWS 中时,此部署路径非常有用。 +Amazon Bedrock 通过 AWS 托管的基础设施提供受支持的 OpenAI 模型。 +当你的组织希望将采购、身份、区域控制以及相关云运维保留在 +AWS 中时,这种部署路径非常有用。 +AWS 中。 -Amazon Bedrock 的可用性与 OpenAI API 不同。在部署前,请确认工作负载所支持的 - 模型、AWS 区域、功能集和定价路径, - 然后再部署。 +Amazon Bedrock 的可用性与 OpenAI API 不同。在部署之前,请确认你所使用工作负载支持的模型、AWS 区域、功能集和计费方式。 + 在部署之前,请确认你所使用工作负载支持的模型、AWS 区域、功能集和计费方式。 + 署之前,请确认你所使用工作负载支持的模型、AWS 区域、功能集和计费方式。 -## Bedrock 可用性如何运作 +## Bedrock 可用性的工作原理 -OpenAI 模型在 Amazon Bedrock 中通过 AWS 管理的部署路径运行, -对支持的模型和能力提供Responses API兼容性。 -你的应用仍然使用OpenAI模型行为,但 AWS 负责周边的 -云控制平面,包括账户访问、区域可用性和 +Amazon Bedrock 中的 OpenAI 模型通过由 AWS 管理的部署路径运行,并提供针对所支持模型与能力的 +Responses API 兼容性。 +你的应用仍使用 OpenAI 的模型行为,但相关的云控制平面由 AWS 负责, +其中包括账户访问、区域可用性以及 计费。 -在以下情况下使用 Bedrock: +在以下场景下使用 Bedrock: -- AWS 原生采购与计费。 -- AWS 托管身份、访问与账户控制。 -- 在受支持的 AWS 区域中部署,适用于有云位置 - 要求的客户。 +- AWS 原生的采购与计费。 +- 由 AWS 管理的身份、访问和账户控制。 +- 面向有云位置要求客户的受支持 AWS 区域部署 + 部署。 -当需要最广泛的功能覆盖时,请直接使用 OpenAI API,以获得 -最新的第一方平台能力,或使用在 -Bedrock 中不可用的功能。 +当你需要最广泛的功能覆盖、最新的第一方平台能力,或 OpenAI API 中独有但 Bedrock 未提供的功能时,请直接使用该 接口。 +最新的第一方平台能力,或 Bedrock 中未提供的功能。 +Bedrock。 ## 发起 Responses API 请求 要通过 Amazon Bedrock 发送 OpenAI SDK 请求,请使用支持 Bedrock 的 SDK -客户端,并选择部署的 AWS 区域和模型 ID: +客户端,并选择你的部署所使用的 AWS 区域和模型 ID: -- 实例化 `BedrockOpenAI` 而不是默认的 `OpenAI` 客户端。该客户端 - 会根据 AWS 区域推导出区域性的 Mantle 基础 URL。 +- 实例化 `BedrockOpenAI` 而不是默认 `OpenAI` 客户端。该客户端 + 会从 AWS 区域推导出对应的 Mantle 基础 URL。 - 本指南中的示例使用 `us-east-2`,它解析为 `https://bedrock-mantle.us-east-2.api.aws/openai/v1`. -- 使用带 `openai.` 前缀的 Bedrock 模型 ID,例如 +- 使用带有 `openai.` 前缀的 Bedrock 模型 ID,例如 `openai.gpt-5.6-sol`. -此示例使用 `openai.gpt-5.6-sol` 中的 `us-east-2`。请使用受支持的模型与 -AWS 区域的组合,以用于你的 Bedrock 部署。 +本示例使用 `openai.gpt-5.6-sol` 位于 `us-east-2`。请为你的 Bedrock 部署使用支持的模型与 +AWS 区域组合。 -以下示例使用 API 密钥,该密钥以 -`AWS_BEARER_TOKEN_BEDROCK`。存储。请参阅 -[Amazon Bedrock API 密钥](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) -了解如何生成和使用 Bedrock API 密钥。SDK 会从你的环境中读取 +以下示例使用以 +`AWS_BEARER_TOKEN_BEDROCK`。形式存储的 Bedrock API key。有关生成和使用 Bedrock API key 的信息,请参阅 接口。API 从你的环境中读取该 +[Amazon Bedrock 接口 key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) +令牌。SDK 从你的环境中读取该 令牌。 通过 Amazon Bedrock 发送 Responses API 请求 @@ -92,13 +92,13 @@ curl "https://bedrock-mantle.us-east-2.api.aws/openai/v1/responses" \ ``` -对于长时间运行的应用程序,请传递令牌提供程序,而不是静态的 API -密钥。SDK 会在每次请求前调用提供程序。AWS 令牌生成器 -包在当前密钥有效时返回缓存的短期密钥,并在需要时 -生成新密钥。它们使用 AWS 凭证链,该链可以 -包括通过 `aws login`. +对于长时间运行的应用程序,请传入一个 token provider,而不是固定的 API +key。SDK 会在每次请求前调用该 provider。AWS token-generator +包会在当前 key 有效时返回缓存的短期 key,并在 +需要时生成新的 key。它们使用 AWS 凭证链,该链可以 +包含通过 `aws login`. -为你的 SDK 安装令牌生成器包: +为你的 SDK 安装 token-generator 包: ```shell npm install @aws/bedrock-token-generator @@ -142,91 +142,91 @@ print(response.output_text) ``` -## 可用性与操作 +## 可用性与运维 -可用性取决于 AWS 区域和模型。初始推出范围更 -受限,与 OpenAI API 相比,因此请检查 [AWS 的模型支持 +可用性取决于 AWS 区域和模型。初始上线范围比 +OpenAI API 更有限,因此请查看 [各 AWS 区域](https://docs.aws.amazon.com/bedrock/latest/userguide/models-region-compatibility.html) -在推出之前。 +的模型支持情况,然后再进行部署。 -Amazon Bedrock 为受支持的 Responses API 兼容推理提供支持,适用于受支持的 OpenAI -模型,在受支持的 AWS 区域中。AWS 管理认证、账户访问、 +Amazon Bedrock 在支持的 AWS 区域内为支持的 Responses API 模型提供与 OpenAI 兼容的推理服务。AWS 负责管理身份验证、账户访问、 采购和计费。 +AWS 区域是物理部署位置,与 OpenAI 数据。 -AWS 区域是物理部署位置,与 OpenAI 数据 -驻留管辖区不同。有驻留要求的团队应评估 -Bedrock 区域本身及相应的 AWS 条款。 +驻留司法管辖区不同。有驻留要求的团队应评估 Bedrock 区域本身 +及其对应的 AWS 条款。 +Bedrock 区域本身以及对应的 AWS 条款。 ## 数据访问与保留 -Amazon Bedrock 对操作者访问和数据保留使用独立的控制: +Amazon Bedrock 对运维访问和数据保留使用相互独立的控制: -- **[零操作员访问 (ZOA)](https://aws.amazon.com/blogs/machine-learning/exploring-the-zero-operator-access-design-of-mantle/)** - 指 AWS 操作员没有技术机制登录 Mantle 的 - 底层计算系统或访问客户数据,包括推理 - 提示和完成。 -- **[零数据保留 (ZDR)](https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html)** - 指 AWS 在 - 有效保留模式为 `none`. +- **[零运维访问(Zero operator access,ZOA)](https://aws.amazon.com/blogs/machine-learning/exploring-the-zero-operator-access-design-of-mantle/)** + 意味着 AWS 运维人员没有任何技术手段登录 Mantle 的 + 底层算力系统或访问客户数据,包括推理 + 提示与补全。 +- **[零数据留存(Zero data retention,ZDR)](https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html)** + 意味着当生效的留存模式为 + 时,AWS 不会将模型的输入或输出写入持久化存储。 `none`. -对于 Amazon Bedrock 中的 OpenAI 模型,当有效保留模式为时,AWS 不会与 OpenAI 共享请求或响应 -内容 `default` 或 `none`. +对于 Amazon Bedrock 中的 OpenAI 模型,当有效保留模式为 +时,AWS 不会与 OpenAI 共享请求或响应内容。 `default` 或 `none`. [配置 Bedrock 数据 保留](https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html#data-retention-configuration) -为你的 AWS 账户或项目。 +,用于你的 AWS 账户或项目。 在 `default` 保留模式下,保留取决于模型和请求 -设置。对于特定的 OpenAI GPT 模型,AWS 会保留分类器标记的流量 -最多 30 天,用于自动离线滥用检测。Responses API 请求 -默认使用 `store: true` 。AWS 保留响应,包括其输入和 -输出,为期 30 天,以便你稍后检索或引用它。 +设置。对于特定的 OpenAI GPT 模型,AWS 会保留被分类器标记的流量 +最多 30 天,用于自动化离线滥用检测。Responses API 请求默认 +使用 `store: true` 。AWS 会保留响应(包括其输入和 +输出)30 天,以便你检索或在后续请求中引用。 请参阅 [Amazon Bedrock 滥用 检测](https://docs.aws.amazon.com/bedrock/latest/userguide/abuse-detection.html) -了解当前的模型列表和保留详情。 +,了解当前的模型列表和保留详情。 如果你需要对需要保留的模型获得完整的 ZDR,请联系你的 AWS -账户经理讨论资格。AWS 会评估每个账户 -和模型的 ZDR 访问权限。如果 AWS 批准访问,请确认 `none` 出现在模型的 +账户经理以讨论资格。AWS 会针对每个账户 +和模型评估 ZDR 访问权限。如果 AWS 批准访问,请确认 `none` 出现在模型的 `allowed_modes`,然后将账户或项目的保留模式设置为 `none`. -设置 `store: false` 不保证 ZDR。当有效保留模式 -为 `none`,AWS 拒绝 `store: true`,且后台模式不可用。 +设置 `store: false` 不能保证 ZDR。当生效保留模式 +为 `none`,时,AWS 会拒绝 `store: true`,并且后台模式不可用。 -如果 AWS 在图像输入中检测到疑似 CSAM,AWS 可能会将标记的输入 - 或输出移出 ZOA 环境,并且仅存储和审查该内容以 - 确定其是否为 CSAM。AWS 也可能向国家 - 当局提交报告。 +如果 AWS 在图像输入中检测到疑似 CSAM,AWS 可以将被标记的输入 + 或输出移出 ZOA 环境,并仅出于 + 目的对其进行存储和审查,以确定其是否为 CSAM。AWS 还可以向国家 + 主管部门提交报告。 ## Responses API 功能可用性 -Amazon Bedrock 支持 Responses API 的可用功能子集, -这些功能通过 OpenAI API 提供。下表描述了截至 -以下日期的功能可用性。它不包括临时可用性和服务状态。 +Amazon Bedrock 支持 Responses API 中可用的部分功能 +通过 OpenAI API 提供。下表描述了截至以下日期的功能可用性 +。该表不包含临时可用性和服务状态信息。 -以下信息代表截至 2026 年 7 月 13 日的功能可用性。 - 模型和区域的可用性也可能发生变化。有关最新信息,请参阅 - Amazon [中关于 OpenAI 模型的 AWS 文档 +以下信息反映了截至 2026 年 7 月 13 日的功能可用性。 + 模型和区域可用性也可能发生变化。有关最新信息,请参阅 + 该 [AWS 文档中关于 Amazon Bedrock 中的 OpenAI 模型 Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards-openai.html) - 以及 [AWS 对模型的支持 + 与 [各 AWS 区域](https://docs.aws.amazon.com/bedrock/latest/userguide/models-region-compatibility.html). -| 功能 | OpenAI API | Amazon Bedrock | +| 能力 | OpenAI API | Amazon Bedrock | | ------------------------- | ----------------------------- | ------------------------------------------------- | | 文本生成 | 可用 | 可用 | | 图像输入 | 可用 | 可用 | -| 文件输入 | 可用 | 支持的文件类型可用 | +| 文件输入 | 可用 | 适用于支持的文件类型 | | 结构化输出 | 可用 | 可用 | | 函数调用 | 可用 | 可用 | | 流式响应 | 可用 | 可用 | | WebSocket 连接 | 可用 | 不可用 | -| 上下文窗口 | 取决于模型 | GPT-5.4 和 GPT-5.5 为 272,000 个令牌 | -| 上下文窗口 | 取决于模型 | GPT-5.6 Sol、Terra 和 Luna 为 1,050,000 个令牌 | -| 推理努力 | 可用 | 可用,包括 `max` 在支持的模型上 | +| 上下文窗口 | 取决于模型 | GPT-5.4 和 GPT-5.5 为 272,000 tokens | +| 上下文窗口 | 取决于模型 | GPT-5.6 Sol、Terra 和 Luna 为 1,050,000 tokens | +| 推理力度 | 可用 | 可用,包括 `max` 在支持的模型上 | | Pro 模式 | 在支持的模型上可用 | 不可用 | | 持久化推理 | 在支持的模型上可用 | 在支持的模型上可用 | -| 提示缓存 | 可用 | 在支持的模型上隐式和显式缓存 | -| 编程工具调用 | 在支持的模型上可用 | 不可用 | -| 多智能体 | 在支持的模型上为测试版 | 不可用 | +| 提示词缓存 | 可用 | 在支持的模型上进行隐式和显式缓存 | +| 可编程工具调用 | 在支持的模型上可用 | 不可用 | +| 多智能体 | 在支持的模型上提供 Beta 版 | 不可用 | | 自定义工具 | 可用 | 可用 | | 客户端 `tool_search` | 可用 | 可用 | | 托管网页搜索 | 可用 | 可用 | @@ -235,49 +235,49 @@ Amazon Bedrock 支持 Responses API 的可用功能子集, | Shell 工具 | 可用 | 不可用 | | 图像生成工具 | 可用 | 不可用 | | 远程 MCP 服务器 | 可用 | 不可用 | -| 服务层级 | 在支持的区域内可用 | 仅支持按需推理 | +| 服务等级 | 在支持的情况下可用 | 仅按需推理 | -客户端 `tool_search` 与托管工具和远程 MCP 服务器 -支持不同。托管 网页搜索在 Amazon Bedrock 上可用,但托管文件 +客户端 `tool_search` 区别于托管工具和远程 MCP 服务器 +支持。Amazon Bedrock 提供托管网页搜索,但托管文件 搜索和远程 MCP 服务器不可用。 -GPT-5.4 和 GPT-5.5 在 Amazon Bedrock 上具有 272,000 token 的上下文窗口。 -GPT-5.6 Sol、Terra 和 Luna 具有 1,050,000 token 的上下文窗口。Amazon -Bedrock 会拒绝超过适用模型限制的请求。请参阅 AWS -模型卡片以了解当前模型特定的限制。 +GPT-5.4 和 GPT-5.5 在 Amazon Bedrock 上拥有 272,000 token 的上下文窗口。 +GPT-5.6 Sol、Terra 和 Luna 拥有 1,050,000 token 的上下文窗口。Amazon +Bedrock 会拒绝超出适用模型限制的请求。请参阅 AWS +模型卡了解当前特定于模型的限制。 -将功能对等视为特定于工作负载。如果你的应用依赖 -特定的工具、响应模式或服务层级,请在承诺部署路径之前通过 -Bedrock 测试该行为。 +请将功能对等视为与工作负载相关。如果你的应用依赖 +特定工具、响应模式或服务层级,请在 +确定部署路径之前通过 Bedrock 验证该行为。 ## 身份验证与操作 -Amazon Bedrock 使用 AWS 管理的访问控制。你的 AWS 管理员控制 +Amazon Bedrock 使用 AWS 托管的访问控制。你的 AWS 管理员控制 哪些账户、角色或临时凭证可以访问受支持的模型 -部署。确切的认证流程取决于你的组织使用的 Bedrock 配置 -。 +部署。具体的认证流程取决于你的组织所使用的 Bedrock 配置 +方式。 -规划 AWS 所有的运营检查,例如: +请规划 AWS 自有的运营检查,例如: -- 账户与模型访问配置。 -- 区域特定的部署审批。 -- 临时凭证或令牌的有效性。 -- AWS 配额、日志记录和支持工作流。 +- 账户和模型访问配置。 +- 特定区域的部署审批。 +- 临时凭证或令牌的有效期。 +- AWS 配额、日志和支持工作流。 ## 定价 -AWS 按 Amazon Bedrock 的使用量计费。Bedrock 的专用定价可能与直接 -OpenAI API 定价不同,包括区域处理溢价或其他 AWS 特定的 +AWS 会向用户收取 Amazon Bedrock 的使用费用。Bedrock 专属定价可能与直接的 +OpenAI API 定价不同,包括区域处理溢价或其他 AWS 专属的 商业条款。 -有关直接 [API 定价](https://developers.openai.com/api/docs/pricing) ,请参见OpenAI API。对于 Bedrock 的 -定价,请使用为你要使用的 Bedrock 部署发布的 AWS 定价资料 +请参阅 [API 定价](https://developers.openai.com/api/docs/pricing) 以获取直接的 OpenAI API 定价。关于 Bedrock +定价,请参阅你计划使用的 Bedrock 部署所对应的 AWS 定价资料。 。 -## 后续步骤 +## Next steps - 在 Amazon Bedrock 中确认你支持的模型和 AWS 区域。 -- 验证你的工作负载所需的确切 API 功能。 -- 启动前比较 Bedrock 定价和直接 API 定价。 +- 验证你的工作负载所需的 API 特性。 +- 在上线前对比 Bedrock 定价和直接 API 定价。 - 如需在 ChatGPT Work 和 Codex 中进行设置,请参阅 [将 ChatGPT Work 和 Codex 与 Amazon Bedrock 结合使用](https://developers.openai.com/codex/amazon-bedrock). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/audio.md b/docs/zh/api/docs/guides/audio.md index cf3a49c..3f72bf9 100644 --- a/docs/zh/api/docs/guides/audio.md +++ b/docs/zh/api/docs/guides/audio.md @@ -1,53 +1,53 @@ -# 音频与语音 +# 音频和语音 -> 有关完整文档索引,请参阅 [llms.txt](/llms.txt)。通过在页面 URL 后追加 `.md` ,可以获取文档页面的 Markdown 版本。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾添加 `.md` 来获取。 -音频模型可以理解语音输入、生成语音输出,或在同一交互中同时实现两者。本指南解释了 OpenAI 音频文档中使用的词汇。当你准备好选择实现路径时,请从 [Realtime 与音频概览](https://developers.openai.com/api/docs/guides/realtime). +音频模型可以理解语音输入、生成语音输出,或在同一交互中同时实现两者。本指南介绍 OpenAI 音频文档中使用的术语。当你准备好选择实现方案时,可以从以下内容开始: [Realtime and audio overview](https://developers.openai.com/api/docs/guides/realtime). ## 音频模态 -音频应用结合以下一种或多种模态: +一个音频应用会组合使用以下一种或多种模态: | 模态 | 含义 | 常见用例 | | --------------- | -------------------------------------------- | ------------------------------------------------- | | 音频输入 | 模型接收来自用户或应用的声音。 | 语音智能体、转录、翻译。 | -| 音频输出 | 模型或API返回口语化音频。 | 语音智能体、文本转语音、口语化响应。 | -| 文本转录 | 语音变为文本。 | 字幕、通话分析、搜索、记录。 | -| 文本提示 | 文本控制模型的输出或行为。 | 语音生成、脚本化语音流程、提示。 | +| 音频输出 | 模型或API 返回口语音频。 | 语音智能体、文本转语音、口语回复。 | +| 文本转录 | 语音转换为文本。 | 字幕、通话分析、搜索、记录。 | +| 文本提示 | 文本控制模型要说或要做的事情。 | 语音生成、脚本化语音流程、提示。 | ## 常见语音任务 -**语音转文本** 将语音转换为文本。可用于字幕、笔记、转录、分析、搜索和无障碍功能。转录可以是基于请求的文件处理,或用于实时音频的流式处理。首先查看 [转录概览](https://developers.openai.com/api/docs/guides/transcription) 以选择 工作流 和模型。 +**Speech to text** 将语音转换为文字。可用于字幕、笔记、转写、分析、搜索和无障碍场景。转写可以基于请求处理文件,也可以通过流式处理实时音频。从 [转写概述](https://developers.openai.com/api/docs/guides/transcription) 入手,选择工作流和模型。 -**文本转语音** 将文本转换为口语音频。可用于旁白、助手、无障碍功能和生成的语音回复。语音生成可以在模型生成音频的同时流式返回音频。 +**Text to speech** 将文字转换为口语音频。可用于旁白、助手、无障碍场景以及生成的语音回复。语音生成可以在模型产生音频时将其以流式方式返回。 -**语音转语音** 让模型在一个低延迟会话中完成收听、推理和说话。当助手需要回复、调用工具或维护会话状态时,可用于对话式语音 智能体。 +**Speech to speech** 让模型在同一个低延迟会话中完成倾听、推理和发声。当助手需要回复、调用工具或维护会话状态时,可用于构建对话式语音智能体。 -**语音翻译** 听取一种语言的语音,并返回另一种语言的翻译语音或转录输出。当翻译应在音频到达时持续开始时,应使用专门的实时翻译会话。 +**Speech translation** 收听一种语言的语音,并以另一种语言返回翻译后的语音或转写文本。当音频到达时需要持续开始翻译时,可使用专用的实时翻译会话。 ## 流式传输与延迟 -流式传输意味着客户端和服务在交互仍处于活动状态时交换部分输入或输出。当用户期望即时反馈时,流式传输非常有用,例如实时字幕、通话、语音智能体和翻译。 +流式传输意味着客户端和服务在交互仍在进行时交换部分输入或输出。当用户期望即时反馈时,例如实时字幕、通话、语音智能体和翻译,流式传输非常有用。 -更低的延迟需要实时连接、更细致的音频处理,以及能够发出部分事件的会话模型。基于请求的API对于文件上传和非交互式工作更为简单,但它们不支持相同的实时交互模式。 +较低的延迟需要实时连接、更细致的音频处理,以及能够发出部分事件的会话模型。基于请求的API对于文件上传和非交互式工作来说更简单,但它们不支持相同的实时交互模式。 -## 基于请求的API与实时会话 +## 基于请求的 API 与实时会话 -OpenAI 支持两种广泛的音频架构: +OpenAI 支持两大类音频架构: | 架构 | 使用场景 | 示例 | | --------------------------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 基于请求的 API | 你有一个文件、文本输入或有界的请求。 | [文件转录](https://developers.openai.com/api/docs/guides/speech-to-text), [文本转语音](https://developers.openai.com/api/docs/guides/text-to-speech). | -| 实时会话 | 音频是实时的,应用需要低延迟事件。 | [语音智能体](https://developers.openai.com/api/docs/guides/voice-agents), [翻译](https://developers.openai.com/api/docs/guides/realtime-translation), [转录](https://developers.openai.com/api/docs/guides/realtime-transcription). | +| 基于请求的音频 API | 你拥有文件、文本输入或有界的请求。 | [文件转录](https://developers.openai.com/api/docs/guides/speech-to-text), [文字转语音](https://developers.openai.com/api/docs/guides/text-to-speech). | +| 实时会话 | 音频是实时的,且应用需要低延迟事件。 | [语音 智能体](https://developers.openai.com/api/docs/guides/voice-agents), [翻译](https://developers.openai.com/api/docs/guides/realtime-translation), [转录](https://developers.openai.com/api/docs/guides/realtime-transcription). | | 多模态 Chat Completions | 你正在使用音频扩展现有的聊天流程。 | [音频输入或输出](#add-audio-to-your-existing-application). | -有关构建路径的指导,请参阅 [Realtime 与音频概览](https://developers.openai.com/api/docs/guides/realtime). +有关构建路径指引,请参阅 [Realtime and audio overview](https://developers.openai.com/api/docs/guides/realtime). -## 向现有应用程序添加音频 +## 为现有应用添加音频 -诸如此类的模型 [`gpt-realtime-2.1`](https://developers.openai.com/api/docs/models/gpt-realtime-2.1) 和 [`gpt-audio-1.5`](https://developers.openai.com/api/docs/models/gpt-audio-1.5) 原生支持多模态,意味着它们能够理解并生成音频和文本作为输入和输出。 +诸如 [`gpt-realtime-2.1`](https://developers.openai.com/api/docs/models/gpt-realtime-2.1) 和 [`gpt-audio-1.5`](https://developers.openai.com/api/docs/models/gpt-audio-1.5) 这类模型本身是多模态的,意味着它们能够理解并生成音频和文本形式的输入与输出。 -对于实时浏览器语音到语音交互,可以从 JavaScript 的 Agents SDK 中的实时会话开始: +对于浏览器中实时的语音对语音交互,请先在 JavaScript 中使用 Agents SDK 启动一个实时会话: 启动实时语音会话 @@ -69,13 +69,13 @@ await session.connect({ ``` -此 JavaScript 示例使用 Agents SDK 从客户端通过 WebRTC 连接浏览器语音 智能体。对于 Python 语音工作流,请使用 [语音 智能体 指南](https://developers.openai.com/api/docs/guides/voice-agents),该指南涵盖了链式语音流水线。 +这个 JavaScript 示例使用 Agents SDK 将浏览器中的语音 智能体 通过 WebRTC 从客户端进行连接。如果是 Python 语音工作流,请使用 [Voice 智能体 指南](https://developers.openai.com/api/docs/guides/voice-agents),其中涵盖了链式语音流水线。 -如果你已有基于文本的 LLM 应用,使用 [Chat Completions 端点](https://developers.openai.com/api/reference/resources/chat),你可能想要添加音频功能。例如,如果你的聊天应用支持文本输入,你可以添加音频输入和输出:在 `audio` 数组中包含 `modalities` ,并使用音频模型,如 [`gpt-audio-1.5`](https://developers.openai.com/api/docs/models/gpt-audio-1.5). +如果你已经基于 [Chat Completions 端点](https://developers.openai.com/api/reference/resources/chat),构建了一个基于文本的 LLM 应用,你可能希望为其增加音频能力。例如,如果你的聊天应用支持文本输入,你可以同时加入音频输入与输出:在 `audio` 数组中加入 `modalities` ,并使用一个支持音频的模型,例如 [`gpt-audio-1.5`](https://developers.openai.com/api/docs/models/gpt-audio-1.5). -该 [Responses API](https://developers.openai.com/api/reference/resources/responses) 文档当前描述 - 文本和图像输入与文本输出。对于这种音频聊天模式,请使用 Chat - Completions 配合支持音频的模型。 +该 [Responses API](https://developers.openai.com/api/reference/resources/responses) 文档目前介绍的是 + 文本和图像输入配合文本输出。对于这种音频聊天模式,请使用支持音频的模型调用 Chat + Completions。 diff --git a/docs/zh/api/docs/guides/chatkit-actions.md b/docs/zh/api/docs/guides/chatkit-actions.md index 82d0f41..1fcaf31 100644 --- a/docs/zh/api/docs/guides/chatkit-actions.md +++ b/docs/zh/api/docs/guides/chatkit-actions.md @@ -1,14 +1,14 @@ # ChatKit 中的操作 -> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。通过附加 `.md` 到页面 URL,可获取文档页面的 Markdown 版本。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。你可以通过在页面 URL 末尾添加 `.md` 来获取文档页面的 Markdown 版本。 -Actions 是让 ChatKit SDK 前端触发流式响应的一种方式,无需用户提交消息。它们也可用于在 ChatKit SDK 之外触发副作用。 +Actions 是一种让 ChatKit SDK 前端在用户不提交消息的情况下触发流式响应的方式。它们也可以用来在 ChatKit SDK 之外触发副作用。 ## 触发操作 -### 响应用户与小部件的交互 +### 响应用户与小组件的交互 -操作可以通过将 `ActionConfig` 附加到任何支持它的 widget 节点来触发。例如,你可以响应按钮上的点击事件。当用户点击此按钮时,操作将被发送到你的服务器,在那里你可以更新 widget、运行推理、流式传输新的线程项等。 +你可以通过将一个 `ActionConfig` 附加到任何支持该功能的 widget 节点上来触发动作。例如,你可以响应对按钮(Button)的点击事件。当用户点击该按钮时,动作会被发送到你的服务器,你可以在服务器上更新 widget、运行推理、流式传输新的 thread 项等。 ```python button = Button( @@ -21,7 +21,7 @@ button = Button( ``` -操作也可以通过你的前端命令式地发送,使用 `sendAction()`。这在你需要 ChatKit 响应 ChatKit 之外发生的交互时可能最为有用,但当你需要在客户端和服务器上同时响应时,它也可以用于链式操作(更多内容见下文)。 +动作也可以由你的前端以命令式方式通过 `sendAction()`。发送。这在你需要让 ChatKit 响应 ChatKit 外部发生的交互时可能最为有用,但它也可以用于在需要同时在客户端和服务器端进行响应时串联多个动作(详见下文)。 ```javascript await chatKit.sendAction({ @@ -35,7 +35,7 @@ await chatKit.sendAction({ ### 在服务端 -默认情况下,操作会发送到你的服务器。你可以通过实现 `action` 方法来在服务器上处理操作 `ChatKitServer`. +默认情况下,actions 会发送到你的服务器。你可以在服务器上通过实现 `action` 方法来处理 actions。 `ChatKitServer`. ```python class MyChatKitServer(ChatKitServer[RequestContext]): @@ -68,11 +68,11 @@ class MyChatKitServer(ChatKitServer[RequestContext]): ``` -将操作及其负载视为不受信任的数据,因为客户端会将它们发送到你的服务器。 +将 actions 及其 payload 视为不可信的数据,因为它们是由客户端发送到你的服务器的。 -### 客户端 +### Client -有时你需要在客户端集成中处理操作。为此,你需要通过添加 `handler="client"` 到 `ActionConfig`. +有时你需要在客户端集成中处理操作。为此,你需要通过添加以下内容来指定将该操作发送到你的客户端操作处理器 `handler="client"` 到 `ActionConfig`. ```python button = Button( @@ -82,7 +82,7 @@ button = Button( ``` -来指定该操作应发送到你的客户端操作处理器。然后,当操作被触发时,它将被传递到你实例化 ChatKit 时提供的回调函数中。 +然后,当操作被触发时,它会被传递到你在实例化 ChatKit 时提供的回调函数。 ```javascript async function handleWidgetAction(action) { @@ -105,9 +105,9 @@ chatKit.setOptions({ ``` -## 强类型操作 +## 强类型 actions -默认情况下 `Action` 和 `ActionConfig` 不是强类型的。然而,我们确实在 `create` 上提供了一个辅助方法 `Action` ,它可以从一组强类型的操作中生成 `ActionConfig`。 +默认情况下 `Action` 并且 `ActionConfig` 不是强类型的。不过,我们确实在 `create` 上提供了一个 `Action` 辅助函数,用于生成 `ActionConfig`,它从一组强类型动作生成。 ```python class ExamplePayload(BaseModel): @@ -162,11 +162,11 @@ class MyChatKitServer(ChatKitServer[RequestContext]): ``` -## 使用组件和操作创建自定义表单 +## 使用 widgets 和 actions 创建自定义表单 -当接收用户输入的小部件节点被挂载在 `Form`,内部时,这些字段的值将包含在 `payload` 中,该对象源自 `Form`. +当接收用户输入的 widget 节点挂载在 `Form`,中时,这些字段的值将被包含在 `payload` 所有源自该 `Form`. -表单值以 `payload` 为键存储, `name` 例如。 +表单值通过其 `payload` 进行键控 `name` 例如。 - `Select(name="title")` → `action.payload.title` - `Select(name="todo.title")` → `action.payload.todo.title` @@ -223,23 +223,23 @@ class MyChatKitServer(ChatKitServer[RequestContext]): ``` -### 验证 +### Validation -`Form` 使用基本的原生表单验证;强制执行 `required` 以及 `pattern` 当表单有任何无效字段时,在配置了这些验证的字段上阻止提交。 +`Form` 使用基本的原生表单验证;在配置了验证规则的字段上强制执行,并在表单存在任何无效字段时阻止提交。 `required` 并且 `pattern` 在已配置字段上执行验证,并在表单存在任何无效字段时阻止提交。 -未来我们可能会添加具有更好用户体验、更具表现力的验证、自定义错误显示等的新验证模式。在那之前,小部件并不是处理具有复杂验证逻辑的表单的理想媒介。如果你有此需求,更好的模式是使用客户端操作处理来触发模态框,在其中显示自定义表单,然后将结果传回 ChatKit,使用 `sendAction`. +未来我们可能会添加具有更佳用户体验、更具表现力的验证以及自定义错误展示等能力的新验证模式。在此之前,小组件并不是承载带有复杂验证逻辑的复杂表单的理想载体。如果你有此需求,更合适的做法是使用客户端操作处理来触发一个模态框,在其中展示自定义表单,然后将结果传递回 ChatKit `sendAction`. ### 将 `Card` 视为 `Form` -你可以传入 `asForm=True` 到 `Card` ,它将作为 `Form`,运行,执行验证并将收集的字段传递给 Card 的 `confirm` 操作。 +你可以将 `asForm=True` 传递给 `Card` ,它将表现为 `Form`,运行校验并将收集到的字段传递给该 Card 的 `confirm` action。 -### 载荷键冲突 +### 负载键冲突 -如果与你的载荷中某些其他已存在的预定义键发生命名冲突,表单值将被忽略。这很可能是一个 bug,因此我们将发出一个 `error` 事件,当我们检测到这种情况时。 +如果与 payload 上已有的其他预定义键存在命名冲突,表单值将被忽略。这很可能是一个 bug,因此当我们发现这种情况时会发出一个 `error` 事件。 ## 控制小组件中的加载状态交互 -使用 `ActionConfig.loadingBehavior` 来控制操作如何在小部件中触发不同的加载状态。 +使用 `ActionConfig.loadingBehavior` 来控制操作如何在小工具中触发不同的加载状态。 ```python button = Button( @@ -254,14 +254,14 @@ button = Button( | 值 | 行为 | | ----------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `auto` | 该操作将根据其使用方式进行自适应。(_默认_) | -| `self` | 该操作会在其所绑定的小部件节点上触发加载状态。 | -| `container` | 该操作会在整个小部件容器上触发加载状态。这会导致小部件略微淡出并变为非交互状态。 | +| `auto` | 该动作会自适应其使用方式。(_default_) | +| `self` | 该动作会在所绑定的小部件节点上触发加载状态。 | +| `container` | 该动作会在整个小部件容器上触发加载状态。这会使小部件略微淡出并变为不可交互。 | | `none` | 无加载状态 | ### 使用 `auto` 行为 -一般来说,我们建议使用 `auto`,这是默认设置。 `auto` 根据操作绑定位置触发加载状态,例如: +通常,我们建议使用 `auto`,它是默认选项。 `auto` 会根据 action 的绑定位置触发加载状态,例如: - `Button.onClickAction` → `self` - `Select.onChangeAction` → `none` diff --git a/docs/zh/api/docs/guides/chatkit-themes.md b/docs/zh/api/docs/guides/chatkit-themes.md index 9cd56bb..79b5398 100644 --- a/docs/zh/api/docs/guides/chatkit-themes.md +++ b/docs/zh/api/docs/guides/chatkit-themes.md @@ -1,23 +1,23 @@ -# ChatKit 中的主题定制与个性化 +# ChatKit 中的主题与自定义 -> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。通过附加 `.md` 到页面 URL 可获取文档页面的 Markdown 版本。 +> 完整文档索引请参阅 [llms.txt](/llms.txt). 可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 -在完成 [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit),之后,了解如何更改主题并为你的聊天嵌入添加自定义设置。通过浅色和深色主题、设置强调色、控制密度和圆角,匹配你的应用美学。 +按照 [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit),操作后,学习如何更改主题并为你的聊天嵌入添加自定义设置。通过明暗主题、设置强调色、控制密度和圆角来匹配你应用的外观风格。 ## 概述 -在较高层面上,通过传入一个选项对象来自定义主题。如果你遵循了 [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit) 在前端中嵌入 ChatKit,请使用下面的 React 语法。 +在高层次上,你可以通过传入一个 options 对象来自定义主题。如果你按照 [ChatKit 快速入门](https://developers.openai.com/api/docs/guides/chatkit) 在你的前端中嵌入 ChatKit 的方式,请使用下面的 React 语法。 -- **React**:传递选项给 `useChatKit({...})` -- **高级集成**:使用以下方式设置选项 `chatkit.setOptions({...})` +- **React**:向 `useChatKit({...})` +- **高级集成**:使用 `chatkit.setOptions({...})` -在两种集成类型中,选项对象的结构相同。 +在两种集成方式中,options 对象的结构是相同的。 -## 探索定制选项 +## 探索自定义选项 -访问 [ChatKit Studio](https://chatkit.studio) 查看 ChatKit 的可运行实现和交互式构建器。如果你更喜欢动手尝试而非阅读文档,这些资源是不错的起点。 +访问 [ChatKit Studio](https://chatkit.studio) 以查看 ChatKit 的可运行实现和交互式构建器。如果你更喜欢通过动手尝试而非阅读文档来构建,这些资源是一个很好的起点。 -#### 探索 ChatKit UI +#### Explore ChatKit UI [chatkit.world @@ -25,19 +25,19 @@ Play with an interactive demo of ChatKit.](https://chatkit.world) -[组件构建器 +[Widget builder Browse available widgets.](https://widgets.chatkit.studio) -[ChatKit 试用环境 +[ChatKit playground Play with an interactive demo to learn by doing.](https://chatkit.studio/playground) -#### 查看工作示例 +#### 查看完整示例 [GitHub 上的示例 @@ -45,7 +45,7 @@ See working examples of ChatKit and get inspired.](https://github.com/openai/openai-chatkit-advanced-samples) -[入门应用仓库 +[入门应用代码仓库 @@ -53,9 +53,9 @@ ## 更改主题 -通过指定颜色、字体等,让产品的外观和感觉与你的产品相匹配。下面,我们切换到深色模式,更改颜色,使边角变圆,调整信息密度,并设置字体。 +通过指定颜色、字体等,匹配你产品的外观与风格。下面我们将主题设置为深色模式,更改颜色,将边角设为圆角,调整信息密度,并设置字体。 -有关所有主题选项,请参阅 [API 参考](https://openai.github.io/chatkit-js/api/openai/chatkit/type-aliases/themeoption/). +如需查看所有主题设置选项,请参阅 [API 参考文档](https://openai.github.io/chatkit-js/api/openai/chatkit/type-aliases/themeoption/). ```javascript const options = { @@ -75,9 +75,9 @@ const options = { ``` -## 自定义开始屏幕文本 +## 自定义启动屏幕文本 -通过更改输入框的占位符文本,让用户知道该问什么或引导他们的首次输入。 +通过修改撰写器的占位符文本,提示用户可以询问什么或引导他们的首次输入。 ```javascript const options = { @@ -91,9 +91,9 @@ const options = { ``` -## 为新线程显示起始提示词 +## 显示新会话的起始提示 -在开始对话时,通过建议提示词想法来引导用户该询问或做什么。 +在开始对话时,通过建议提示创意来引导用户可以询问或执行的操作。 ```javascript const options = { @@ -116,9 +116,9 @@ const options = { ``` -## 向标题添加自定义按钮 +## 在页眉中添加自定义按钮 -自定义头部按钮可帮助你添加与集成相关的导航、上下文或操作。 +自定义顶部按钮可帮助你添加与集成相关的导航、上下文或操作。 ```javascript const options = { @@ -138,11 +138,11 @@ const options = { ## 启用文件附件 -默认情况下,附件是禁用的。要启用它们,请添加附件配置。 -除非你在做自定义后端,否则必须使用 `hosted` 上传策略。 +附件默认是禁用的。若要启用它们,请添加附件配置。 +除非你使用自定义后端,否则必须使用 `hosted` 上传策略。 有关其他上传策略如何与自定义后端配合使用的更多信息,请参阅 Python SDK 文档。 -你还可以控制用户可以附加到消息的文件数量、大小和类型。 +你还可以控制用户可以在消息中附加的文件数量、大小和类型。 ```javascript const options = { @@ -158,12 +158,12 @@ const options = { ``` -## 在编辑器中启用带有实体标签的 @提及 +## 在编辑器中通过实体标签启用 @提及 -允许用户使用 @-提及 标记自定义“实体”。这有助于实现更丰富的对话上下文和交互性。 +让用户可以使用 @ 提及来标记自定义“实体”。这有助于丰富对话上下文并提升交互性。 -- 使用 `onTagSearch` 根据输入查询返回实体列表。 -- 使用 `onClick` 处理实体的点击事件。 +- 使用 `onTagSearch` 以根据输入查询返回实体列表。 +- 使用 `onClick` 以处理实体的点击事件。 ```javascript const options = { @@ -195,9 +195,9 @@ const options = { ## 自定义实体标签的显示方式 -你可以使用 widget 自定义鼠标悬停在实体标签上的外观。当用户悬停在实体标签上时,展示丰富的预览内容,例如名片、文档摘要或图片。 +你可以使用 widget 自定义鼠标悬停时实体标签的外观。当用户悬停在实体标签上时,显示丰富的预览,例如名片、文档摘要或图片。 -[Widget 构建器 +[Widget builder @@ -225,7 +225,7 @@ const options = { ## 向 composer 添加自定义工具 -通过让用户在撰写栏中触发应用特定操作来提升生产力。所选工具 +通过允许用户从撰写栏触发应用专属的操作来提升生产力。所选工具 将作为工具偏好发送给模型。 ```javascript @@ -246,7 +246,7 @@ const options = { ## 切换界面区域和功能 -如果你需要对页眉中可用选项进行更多自定义,并希望自行实现,可以禁用主要的 UI 区域和功能。当线程和历史记录的概念不适用于你的用例时(例如在支持聊天机器人中),禁用历史记录会很有用。 +如果你需要对头部中的可用选项进行更多自定义并希望自行实现,可以禁用主要的 UI 区域和功能。当线程和历史记录的概念对你的用例没有意义时(例如在支持聊天机器人中),禁用历史记录可能会很有用。 ```javascript const options = { @@ -258,7 +258,7 @@ const options = { ## 覆盖区域设置 -如果你有应用级语言设置,请覆盖默认区域设置。默认情况下,区域设置将设置为浏览器的区域设置。 +如果你有应用级的语言设置,可以覆盖默认语言环境。默认情况下,语言环境设置为浏览器的语言环境。 ```javascript const options = { diff --git a/docs/zh/api/docs/guides/chatkit-widgets.md b/docs/zh/api/docs/guides/chatkit-widgets.md index abc77f0..e87e0ee 100644 --- a/docs/zh/api/docs/guides/chatkit-widgets.md +++ b/docs/zh/api/docs/guides/chatkit-widgets.md @@ -1,26 +1,26 @@ -# ChatKit 组件 +# ChatKit widgets -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。若要获取文档页面的 Markdown 版本,可在页面 URL 后追加 `.md` 。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 -小部件是 ChatKit 附带的容器和组件。你可以使用预构建的小部件、修改模板或自行设计,以在您的产品中全面定制 ChatKit。 +Widgets 是 ChatKit 自带的容器和组件。你可以使用预构建的 Widget、对模板进行修改,或自行设计,以在你的产品中完全定制 ChatKit。 -![小部件](https://cdn.openai.com/API/images/widget-graphic.png) +![widgets](https://cdn.openai.com/API/images/widget-graphic.png) -## 快速设计组件 +## 快速设计小组件 -使用 [组件构建器](https://widgets.chatkit.studio) 在 ChatKit Studio 中试验卡片布局、列表行和预览组件。当你有了满意的设计后,将生成的 JSON 复制到你的集成中,并从你的后端提供服务。 +使用 [Widget Builder](https://widgets.chatkit.studio) 在 ChatKit Studio 中尝试卡片布局、列表行和预览组件。确定满意的设计后,将生成的 JSON 复制到你的集成中,并由你的后端提供服务。 -## 上传资源 +## Upload assets -上传资源以自定义 ChatKit 部件,使其与你的产品匹配。ChatKit 期望上传的文件和图片在消息中引用之前由你的后端托管。请遵循 [Python SDK 中的上传指南](https://openai.github.io/chatkit-python/server) 以获取参考实现。 +上传资源以自定义 ChatKit 小部件,使其与你产品风格保持一致。ChatKit 要求上传的文件和图片在消息中引用之前由你的后端托管。请参阅 [Python SDK 中的上传指南](https://openai.github.io/chatkit-python/server) 以获取参考实现。 -ChatKit 部件可以直接在对话中展示上下文、快捷方式和交互式卡片。当用户点击部件按钮时,你的应用程序会收到一个自定义操作载荷,以便你能够从后端进行响应。 +ChatKit 小部件可以在对话中直接展示上下文、快捷方式和交互卡片。当用户点击小部件按钮时,你的应用会收到一个自定义动作负载(payload),从而由你的后端进行响应。 -## 在你的服务器上处理操作 +## 在服务端处理动作 -小组件操作允许用户从界面触发逻辑。操作可以绑定到各种小组件节点上的不同事件(例如,按钮点击),然后由你的服务端或客户端集成处理。 +小组件操作允许用户从 UI 触发逻辑。操作可以绑定到不同小组件节点上的各类事件(例如按钮点击),然后由你的服务端或客户端集成进行处理。 -使用 `onAction` 回调 `WidgetsOption` 或等效的 React 钩子捕获小组件事件。将操作负载转发到你的后端以处理操作。 +使用 `onAction` 回调 `WidgetsOption` 或等效的 React hook 来捕获小组件事件。将操作负载转发到你的后端以处理这些操作。 ```javascript chatkit.setOptions({ @@ -37,27 +37,27 @@ chatkit.setOptions({ ``` -正在寻找完整的服务端示例?请参阅 [ChatKit Python SDK - 文档](https://openai.github.io/chatkit-python-sdk/guides/widget-actions) 以了解 - 端到端的演练。 +需要完整的服务端示例?请参阅 [ChatKit Python SDK + 文档](https://openai.github.io/chatkit-python-sdk/guides/widget-actions) 获取 + 端到端操作指南。 -了解更多,请参阅 [操作文档](https://developers.openai.com/api/docs/guides/chatkit-actions). +更多信息请参阅 [操作文档](https://developers.openai.com/api/docs/guides/chatkit-actions). ## 参考 -我们建议从上面的可视化构建器和工具开始。使用本文档其余部分了解小组件的工作原理并查看所有选项。 +我们建议先使用上方的可视化构建器和工具入门。再借助本文档其余部分了解 widget 的工作机制以及查看所有可用选项。 -小组件由单个容器(`WidgetRoot`)构成,其中包含许多组件(`WidgetNode`). +Widget 由单个容器(`WidgetRoot`)构成,该容器包含许多组件(`WidgetNode`). ### 容器(`WidgetRoot`) -容器具有特定的特征,如显示状态指示器文本和主要操作。 +容器具有一些特定特征,例如显示状态指示器文本和主要操作。 -- **卡片** - 用于容纳小部件的有限容器。支持 `status`, `confirm` 和 `cancel` 字段,用于在小部件下方显示状态指示器和操作按钮。 +- **Card** - 一个用于容纳 widget 的有界容器。支持 `status`, `confirm` 和 `cancel` 字段,用于在 widget 下方展示状态指示器和操作按钮。 - `children`: list[WidgetNode] - - `size`: "sm" | "md" | "lg" | "full"(默认:"md") + - `size`: "sm" | "md" | "lg" | "full"(默认值:"md") - `padding`: float | str | dict[str, float | str] | None - (键: `top`, `right`, `bottom`, `left`, `x`, `y`) + (keys: `top`, `right`, `bottom`, `left`, `x`, `y`) - `background`: str | `{ dark: str, light: str }` | None - `status`: `{ text: str, favicon?: str }` | `{ text: str, icon?: str }` | None - `collapsed`: bool | None @@ -67,7 +67,7 @@ chatkit.setOptions({ - `theme`: "light" | "dark" | None - `key`: str | None -- **ListView** – 显示垂直项目列表,每项作为一个 `ListViewItem`. +- **ListView** – 显示一个垂直的项目列表,每个项目为一个 `ListViewItem`. - `children`: list[ListViewItem] - `limit`: int | "auto" | None - `status`: `{ text: str, favicon?: str }` | `{ text: str, icon?: str }` | None @@ -76,9 +76,9 @@ chatkit.setOptions({ ### 组件(`WidgetNode`) -支持以下小组件类型。你还可以在 Widget Builder 的 [组件](https://widgets.chatkit.studio/components) 部分浏览组件并使用交互式编辑器。 +支持以下小组件类型。你也可以浏览组件,并在 Widget Builder 的 [components](https://widgets.chatkit.studio/components) 部分使用交互式编辑器。 -- **徽章** – 用于表示状态或元数据的小标签。 +- **Badge** – 用于表示状态或元数据的小标签。 - `label`: str - `color`: "secondary" | "success" | "danger" | "warning" | "info" | "discovery" | None - `variant`: "solid" | "soft" | "outline" | None @@ -86,7 +86,7 @@ chatkit.setOptions({ - `size`: "sm" | "md" | "lg" | None - `key`: str | None -- **Box** – 灵活的布局容器,支持方向、间距和样式。 +- **Box** – 用于布局的灵活容器,支持方向、间距和样式。 - `children`: list[WidgetNode] | None - `direction`: "row" | "column" | None - `align`: "start" | "center" | "end" | "baseline" | "stretch" | None @@ -135,8 +135,8 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `margin`: float | str | dict[str, float | str] | None (keys: `top`, `right`, `bottom`, `left`, `x`, `y`) - `border`: int | dict[str, Any] | None - (单边框: `{ size: int, color?: str | { dark: str, light: str }, style?: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" }` - 每边: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|dict, x?: int|dict, y?: int|dict }`) + (single border: `{ size: int, color?: str | { dark: str, light: str }, style?: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" }` + per-side: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|dict, x?: int|dict, y?: int|dict }`) - `radius`: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "full" | "100%" | "none" | None - `background`: str | `{ dark: str, light: str }` | None - `aspectRatio`: float | str | None @@ -146,7 +146,7 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `children`: list[WidgetNode] | None - `gap`: int | str | None - `padding`: float | str | dict[str, float | str] | None - (键: `top`, `right`, `bottom`, `left`, `x`, `y`) + (keys: `top`, `right`, `bottom`, `left`, `x`, `y`) - `align`: "start" | "center" | "end" | "baseline" | "stretch" | None - `justify`: "start" | "center" | "end" | "stretch" | "between" | "around" | "evenly" | None - `wrap`: "nowrap" | "wrap" | "wrap-reverse" | None @@ -161,16 +161,16 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `minSize`: int | str | None - `maxSize`: int | str | None - `margin`: float | str | dict[str, float | str] | None - (键: `top`, `right`, `bottom`, `left`, `x`, `y`) + (keys: `top`, `right`, `bottom`, `left`, `x`, `y`) - `border`: int | dict[str, Any] | None - (单边框: `{ size: int, color?: str | { dark: str, light: str }, style?: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" }` - 每侧: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|dict, x?: int|dict, y?: int|dict }`) + (single border: `{ size: int, color?: str | { dark: str, light: str }, style?: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" }` + per-side: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|dict, x?: int|dict, y?: int|dict }`) - `radius`: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "full" | "100%" | "none" | None - `background`: str | `{ dark: str, light: str } `| None - `aspectRatio`: float | str | None - `key`: str | None -- **按钮** – 一个灵活的操作按钮。 +- **Button** – 灵活的操作按钮。 - `submit`: bool | None - `style`: "primary" | "secondary" | None - `label`: str @@ -186,7 +186,7 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `iconSize`: "sm" | "md" | "lg" | "xl" | "2xl" | None - `key`: str | None -- **Caption** – 较小的辅助文本。 +- **Caption** – 更小的辅助文本。 - `value`: str - `size`: "sm" | "md" | "lg" | None - `weight`: "normal" | "medium" | "semibold" | "bold" | None @@ -196,7 +196,7 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `maxLines`: int | None - `key`: str | None -- **日期选择器** – 带有下拉日历的日期输入。 +- **DatePicker** – 带下拉日历的日期输入框。 - `onChangeAction`: ActionConfig | None - `name`: str - `min`: datetime | None @@ -213,20 +213,20 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `disabled`: bool | None - `key`: str | None -- **分隔线** – 水平或垂直分隔符。 +- **Divider** – 水平或垂直分隔线。 - `spacing`: int | str | None - `color`: str | `{ dark: str, light: str }` | None - `size`: int | str | None - `flush`: bool | None - `key`: str | None -- **图标** – 按名称显示图标。 +- **Icon** – 按名称显示一个图标。 - `name`: str - `color`: str | `{ dark: str, light: str }` | None - `size`: "xs" | "sm" | "md" | "lg" | "xl" | None - `key`: str | None -- **图像** – 显示具有可选样式、适应和位置的图像。 +- **Image** – 显示一张图片,可设置样式、填充方式和位置。 - `size`: int | str | None - `height`: int | str | None - `width`: int | str | None @@ -250,27 +250,27 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `flush`: bool | None - `key`: str | None -- **ListView** – 显示一个垂直的项目列表。 +- **ListView** – 显示一个纵向列表。 - `children`: list[ListViewItem] | None - `limit`: int | "auto" | None - `status`: dict[str, Any] | None - (形状: `{ text: str, favicon?: str }`) + (shape: `{ text: str, favicon?: str }`) - `theme`: "light" | "dark" | None - `key`: str | None -- **ListViewItem** – 中的一个项目 `ListView` ,带有可选操作。 +- **ListViewItem** – 一个 `ListView` 中的项目,可包含动作。 - `children`: list[WidgetNode] | None - `onClickAction`: ActionConfig | None - `gap`: int | str | None - `align`: "start" | "center" | "end" | "baseline" | "stretch" | None - `key`: str | None -- **Markdown** – 渲染 markdown 格式的文本,支持流式更新。 +- **Markdown** – 渲染 Markdown 格式文本,支持流式更新。 - `value`: str - `streaming`: bool | None - `key`: str | None -- **选择** – 下拉单选输入。 +- **Select** – 下拉式单选输入。 - `options`: list[dict[str, str]] (每个选项: `{ label: str, value: str }`) - `onChangeAction`: ActionConfig | None @@ -285,11 +285,11 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `disabled`: bool | None - `key`: str | None -- **间隔** – 布局中使用的弹性空白空间。 +- **Spacer** – 布局中使用的弹性空白区域。 - `minSize`: int | str | None - `key`: str | None -- **文本** – 显示纯文本(使用 `Markdown` 进行 Markdown 渲染)。支持流式更新。 +- **Text** – 显示纯文本(使用 `Markdown` 渲染 Markdown)。支持流式更新。 - `value`: str - `color`: str | `{ dark: str, light: str }` | None - `width`: float | str | None @@ -306,7 +306,7 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di (当为 dict 时: `{ name: str, autoComplete?: str, autoFocus?: bool, autoSelect?: bool, allowAutofillExtensions?: bool, required?: bool, placeholder?: str, pattern?: str }`) - `key`: str | None -- **标题** – 突出的标题文本。 +- **Title** – 醒目的标题文本。 - `value`: str - `size`: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | None - `weight`: "normal" | "medium" | "semibold" | "bold" | None @@ -316,7 +316,7 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `maxLines`: int | None - `key`: str | None -- **Form** – 一个可提交操作的布局容器。 +- **Form** – 可提交操作的布局容器。 - `onSubmitAction`: ActionConfig - `children`: list[WidgetNode] | None - `align`: "start" | "center" | "end" | "baseline" | "stretch" | None @@ -333,16 +333,16 @@ per-side`: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|di - `minSize`: int | str | None - `maxSize`: int | str | None - `padding`: float | str | dict[str, float | str] | None - (键: `top`, `right`, `bottom`, `left`, `x`, `y`) + (keys: `top`, `right`, `bottom`, `left`, `x`, `y`) - `margin`: float | str | dict[str, float | str] | None - (键: `top`, `right`, `bottom`, `left`, `x`, `y`) + (keys: `top`, `right`, `bottom`, `left`, `x`, `y`) - `border`: int | dict[str, Any] | None - (单边框: `{ size: int, color?: str | { dark: str, light: str }, style?: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" }` - 每侧: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|dict, x?: int|dict, y?: int|dict }`) + (single border: `{ size: int, color?: str | { dark: str, light: str }, style?: "solid" | "dashed" | "dotted" | "double" | "groove" | "ridge" | "inset" | "outset" }` + per-side: `{ top?: int|dict, right?: int|dict, bottom?: int|dict, left?: int|dict, x?: int|dict, y?: int|dict }`) - `radius`: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "full" | "100%" | "none" | None - `background`: str | `{ dark: str, light: str }` | None - `key`: str | None -- **过渡** – 包装可能进行动画的内容。 +- **Transition** – 包裹可能带动画的内容。 - `children`: WidgetNode | None - `key`: str | None \ No newline at end of file diff --git a/docs/zh/api/docs/guides/chatkit.md b/docs/zh/api/docs/guides/chatkit.md index 83361d1..6df89a1 100644 --- a/docs/zh/api/docs/guides/chatkit.md +++ b/docs/zh/api/docs/guides/chatkit.md @@ -1,57 +1,57 @@ # ChatKit -> 完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在 `.md` 添加到页面 URL 末尾来获取。 +> 如需查看完整文档索引,请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取文档页面的 Markdown 版本。 -ChatKit 是构建智能体聊天体验的最佳方式。无论你是在构建内部知识库助手、HR 入职帮助工具、研究伴侣、购物或日程安排助手、故障排除机器人、财务规划顾问,还是支持智能体,ChatKit 都提供可定制的聊天嵌入组件,处理所有用户体验细节。 +ChatKit 是构建智能体式聊天体验的最佳方式。无论是构建内部知识库助手、HR 入职辅助、研究陪伴、购物或日程安排助手、故障排查机器人、理财规划顾问,还是支持 智能体,ChatKit 都提供可定制的聊天嵌入组件来处理所有用户体验细节。 -使用 ChatKit 的可嵌入 UI 组件、可定制提示、工具调用支持、文件附件和思维链可视化,无需重新设计聊天界面即可构建智能体。 +使用 ChatKit 的可嵌入 UI 组件、可定制提示、工具调用支持、文件附件和思维链可视化来构建 智能体,无需重新发明聊天 UI。 ## 概述 -在两个 ChatKit 路径之间选择: +在两条 ChatKit 路径之间选择: -- **自定义服务器集成**。在你自己的基础设施上运行 ChatKit。使用 ChatKit Python SDK 并连接到任何智能体服务,包括使用 [Agents SDK](https://developers.openai.com/api/docs/guides/agents)。构建的服务。使用小部件构建前端。 -- **现有的 智能体 Builder 托管的集成**。如果你已经将 ChatKit 与 智能体 Builder 工作流 一起使用,你可以在 工作流 Builder 过渡期内继续使用该托管的 智能体。 +- **自定义服务端集成**. 在你自己的基础设施上运行 ChatKit。使用 ChatKit Python SDK 并连接到任何智能体服务,包括使用以下方式构建的服务: [Agents SDK](https://developers.openai.com/api/docs/guides/agents). 使用 widgets 构建前端。 +- **现有的 智能体 Builder 托管集成**. 如果你已经在 智能体 Builder 工作流 中使用 ChatKit,可以在 智能体 Builder 过渡期内继续使用该托管的 工作流。 -OpenAI 正在弃用 智能体 Builder。现有用户可以继续使用 - 在过渡期内使用,该产品计划于 - 2026年11月30日关闭。ChatKit 仍然可用。对于新的工作或迁移 - 规划,请使用 [高级 ChatKit 集成](https://developers.openai.com/api/docs/guides/custom-chatkit) - 配合你自己的 服务端 智能体 实现,并参阅 [从 智能体 迁移 - Builder](https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder) 以获取 智能体 - Builder 迁移指南。 +OpenAI 正在弃用 智能体 Builder。现有用户可以在过渡期内继续使用该产品 + ,该产品计划于 + 2026 年 11 月 30 日停用。ChatKit 仍然可用。如需开展新工作或制定迁移 + 计划,请使用 [高级 ChatKit 集成](https://developers.openai.com/api/docs/guides/custom-chatkit) + 搭配你自己的 服务端 智能体 实现,并参阅 [从 智能体 + Builder 迁移](https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder) 获取 智能体 + Builder 过渡指引。 ## 开始使用 ChatKit -- **[自定义服务器集成](https://developers.openai.com/api/docs/guides/custom-chatkit)**:使用任何服务器和 ChatKit SDK 构建你自己的自定义 ChatKit 用户体验 -- **[现有托管工作流](#embed-chatkit-in-your-frontend)**:在过渡期内将 ChatKit 连接到现有的 智能体构建器工作流 +- **[自定义服务端集成](https://developers.openai.com/api/docs/guides/custom-chatkit)**: 使用任意服务端和 ChatKit SDK 构建你自己的 ChatKit 自定义用户体验 +- **[现有托管 工作流](#embed-chatkit-in-your-frontend)**: 在过渡期内,将 ChatKit 连接到现有的 智能体 Builder 工作流 ## 在你的前端中嵌入 ChatKit -仅当你已有支持 ChatKit 实现的 智能体 Builder 工作流 时,才使用此路径。对于新的 ChatKit 应用,或在 智能体 Builder 关闭之前迁移,请使用 [高级集成](https://developers.openai.com/api/docs/guides/custom-chatkit) 将 ChatKit 连接到你的 服务端 智能体 实现。 +仅当你已经拥有支持 ChatKit 实现的 智能体 Builder 工作流 时,才使用此路径。对于新的 ChatKit 应用,或在 智能体 Builder 关闭前进行迁移时,请使用 [高级集成](https://developers.openai.com/api/docs/guides/custom-chatkit) ,将 ChatKit 连接到你自己实现的 服务端 智能体。 -在高层级别,使用现有托管 工作流 设置 ChatKit 是一个三步过程。在 智能体 Builder 仍然可用时打开现有的 工作流。然后设置 ChatKit 并添加功能来构建你的聊天体验。 +从整体上看,将 ChatKit 与现有托管 工作流 一起设置是一个三步流程。在 Agent智能体 Builder 仍然可用时打开你现有的 工作流。然后设置 ChatKit 并添加功能来构建你的聊天体验。 -![OpenAI-托管的 ChatKit](https://cdn.openai.com/API/docs/images/openai-hosted.png) +![OpenAI 托管的 ChatKit](https://cdn.openai.com/API/docs/images/openai-hosted.png) ### 1. 使用现有的托管工作流 -在 工作流 中打开你现有的 工作流 [智能体 构建器](https://developers.openai.com/api/docs/guides/agent-builder)。你将获得一个 工作流 ID。有关过渡规划,请参阅 [从 智能体 构建器迁移](https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder). +在 工作流 中打开你现有的 [智能体 Builder](https://developers.openai.com/api/docs/guides/agent-builder)。你会获得一个 工作流 ID。有关过渡规划,请参阅 [从 智能体 Builder 迁移](https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder). -前端中嵌入的聊天将指向你选择的 工作流。 +你前端中嵌入的聊天界面将指向你选择的 工作流。 -### 2. 在你的产品中设置 ChatKit +### 2. 在你的产品中集成 ChatKit -要设置 ChatKit,你需要创建 ChatKit 会话和服务端端点,传入你的工作流 ID,交换客户端密钥,并添加一个脚本以在你的网站上嵌入 ChatKit。 +要设置 ChatKit,你需要创建一个 ChatKit 会话和一个服务端端点,传入你的工作流 ID,交换客户端密钥,并向网站中添加一段脚本来嵌入 ChatKit。 -**重要安全说明:** 创建 ChatKit 会话时,你必须传入一个 `user` 参数,该参数应针对每个最终用户唯一。你的服务器必须 -对应用程序的用户进行身份验证,并在该参数中传递他们的唯一标识符。 +**重要安全说明:** 创建 ChatKit 会话时,你必须传入一个 `user` 参数,该参数对每个最终用户都应保持唯一。你的服务端必须 +对应用的用户进行身份验证,并在该参数中为每个用户传入一个唯一标识符。 -1. 在你的服务器上生成一个客户端令牌。 +1. 在你的服务器上,生成一个客户端令牌。 - 此代码片段启动一个 FastAPI 服务,其唯一任务是仅通过 OpenAI API 创建一个新的 ChatKit 会话,并返回该会话的客户端密钥: + 这段代码片段启动一个 FastAPI 服务,其唯一职责是通过 OpenAI API 创建一个新的 ChatKit 会话,并返回该会话的客户端密钥: server.py @@ -118,13 +118,13 @@ def create_chatkit_session( ``` - 在启动服务之前,设置 `OPENAI_API_KEY`, `OPENAI_CHATKIT_WORKFLOW_ID`,以及 `CHATKIT_AUTHENTICATED_USERS`。最后一个值是一个 JSON 映射,将你的应用的 bearer 令牌映射到稳定的用户 ID。在生产环境中,用你的应用的认证或会话查找替代这个基于环境变量的映射。 + 在启动服务之前,请设置 `OPENAI_API_KEY`, `OPENAI_CHATKIT_WORKFLOW_ID`,以及 `CHATKIT_AUTHENTICATED_USERS`。最后一个值是一个 JSON 映射,将你应用的 bearer 令牌映射到稳定的用户 ID。在生产环境中,请将这个由环境变量支持的映射替换为你应用的身份验证或会话查找机制。 2. 在你的服务端代码中,将你的工作流 ID 和密钥传递给会话端点。 - 客户端密钥是你的 ChatKit 前端用于打开或刷新聊天会话的凭据。你不应存储它,而应立即将其交接给 ChatKit 客户端库。 + 客户端密钥是 ChatKit 前端用于打开或刷新聊天会话的凭证。你无需存储它;只需立即将其交接给 ChatKit 客户端库。 - 请参阅 [chatkit-js 仓库](https://github.com/openai/chatkit-js) 在 GitHub 上。 + 请参阅 [chatkit-js 仓库](https://github.com/openai/chatkit-js) 在 GitHub 上的。 chatkit.js @@ -171,7 +171,7 @@ export default async function getChatKitSessionToken(deviceId) { npm install @openai/chatkit-react ``` -4. 将 ChatKit JS 脚本添加到你的页面。将以下代码片段放入你页面的 `` 或你加载脚本的任何地方,浏览器将自动获取并运行 ChatKit。 +4. 将 ChatKit JS 脚本添加到你的页面。将以下代码片段放入页面的 `` 或你加载脚本的任何位置,浏览器将为你获取并运行 ChatKit。 index.html @@ -183,7 +183,7 @@ async ``` -5. 在你的 UI 中渲染 ChatKit。向 React 传递 `MyChat` 组件一个 `getAppAuthToken` 返回当前用户 bearer 令牌的函数。如果你使用 JavaScript 标签,请确保在代码片段的作用域内提供相同的函数。此代码将凭据发送到你的服务器,获取客户端密钥,并挂载一个连接到你工作流的实时聊天组件。 +5. 在你的 UI 中渲染 ChatKit。为 React `MyChat` 组件传入一个 `getAppAuthToken` 函数,该函数返回当前用户的 bearer token。如果你使用 JavaScript 选项卡,请在代码片段的作用域内提供相同的函数。此代码会将该凭证发送给你的服务器,获取客户端密钥,并挂载一个连接到你的工作流的实时聊天小组件。 你的前端代码 @@ -250,7 +250,7 @@ import { ChatKit, useChatKit } from '@openai/chatkit-react'; ### 3. 构建并迭代 -请参阅 [自定义主题](https://developers.openai.com/api/docs/guides/chatkit-themes), [小部件](https://developers.openai.com/api/docs/guides/chatkit-widgets),以及 [操作](https://developers.openai.com/api/docs/guides/chatkit-actions) 文档详细了解 ChatKit 的工作原理。或者探索以下资源来测试你的聊天、迭代提示,并添加小部件和工具。 +请参阅 [自定义主题](https://developers.openai.com/api/docs/guides/chatkit-themes), [小组件](https://developers.openai.com/api/docs/guides/chatkit-widgets),以及 [操作](https://developers.openai.com/api/docs/guides/chatkit-actions) 文档,详细了解 ChatKit 的工作原理。或者浏览以下资源来测试你的聊天功能、迭代提示,并添加小组件和工具。 #### 构建你的实现 @@ -280,19 +280,19 @@ import { ChatKit, useChatKit } from '@openai/chatkit-react'; Play with an interactive demo of ChatKit.](https://chatkit.world) -[组件构建器 +[Widget builder Browse available widgets.](https://widgets.chatkit.studio) -[ChatKit 游乐场 +[ChatKit playground Play with an interactive demo to learn by doing.](https://chatkit.studio/playground) -#### 查看工作示例 +#### 查看可运行的示例 [GitHub 上的示例 @@ -306,6 +306,6 @@ import { ChatKit, useChatKit } from '@openai/chatkit-react'; Clone a repo to start with a fully working template.](https://github.com/openai/openai-chatkit-starter-app) -## 后续步骤 +## Next steps -当你的 ChatKit 实现达到满意程度后,了解如何通过以下内容优化它: [评测](https://developers.openai.com/api/docs/guides/agent-evals)。对于新的 ChatKit 应用,或将现有 ChatKit 应用从 智能体 Builder 托管的 工作流迁移,请参阅 [高级集成文档](https://developers.openai.com/api/docs/guides/custom-chatkit). \ No newline at end of file +当你对自己的 ChatKit 实现感到满意后,了解如何通过以下方式对其进行优化 [evals](https://developers.openai.com/api/docs/guides/agent-evals). 如需构建新的 ChatKit 应用,或将现有 ChatKit 应用从 智能体 Builder 托管的 工作流 中迁出,请参阅 [进阶集成文档](https://developers.openai.com/api/docs/guides/custom-chatkit). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/code-generation.md b/docs/zh/api/docs/guides/code-generation.md index 9e9403f..3bb0cc0 100644 --- a/docs/zh/api/docs/guides/code-generation.md +++ b/docs/zh/api/docs/guides/code-generation.md @@ -1,31 +1,31 @@ # 代码生成 -> 要查看完整的文档索引,请参见 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 后追加 `.md` 即可获取文档页面的 Markdown 版本。 -编写、审查、编辑以及回答关于代码的问题,是当今 OpenAI 模型的主要用例之一。本指南将带你了解使用以下工具进行代码生成的选项 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 Codex。 +编写、审查、编辑代码以及回答代码相关问题,是 OpenAI 模型当前最主要的用途之一。本指南将介绍你使用 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 Codex 进行代码生成的多种方案。 -## 开始使用 +## 入门 - - **[使用 Codex 获取开箱即用的编码智能体](#use-codex)**:将你的代码库连接到 Codex,并使用软件工程智能体加速你的项目。 -- **[与编码模型集成](#integrate-with-coding-models)**:在应用程序中使用 OpenAI 模型。例如,将它们添加到模型选择器中。 + - **[使用 Codex 开箱即用的编码智能体](#use-codex)**:将你的代码库连接到 Codex,并使用软件工程智能体加速你的项目。 +- **[集成编码模型](#integrate-with-coding-models)**:在你的应用中使用 OpenAI 模型。例如,可以将它们添加到模型选择器中。 ## 使用 Codex -[**Codex**](https://developers.openai.com/codex) 是 OpenAI 用于软件开发的编码智能体。它帮助你编写、审查和调试代码。你可以通过各种界面与 Codex 交互:在 IDE 中、通过 CLI、在网页和移动网站上,或在你的 CI/CD 管道中使用 SDK。Codex 是在你的项目中实现智能体软件工程的最佳方式。 +[**Codex**](https://developers.openai.com/codex) 是 OpenAI 用于软件开发的编码 智能体。它可以帮助你编写、审查和调试代码。你可以通过多种界面与 Codex 交互:在你的 IDE 中、通过 CLI、在网页和移动端站点上,或在 CI/CD 流水线中配合 SDK 使用。Codex 是在你的项目中获得智能体化软件工程能力的最佳方式。 -Codex 与 GPT-5 系列的最新模型配合最佳,例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol)。我们提供一系列专为与 Codex 等编码智能体配合而设计的模型,例如 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex),但我们建议在大多数代码生成任务中使用最新的通用模型。 +Codex 与来自 GPT-5 系列的最新模型配合效果最佳,例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol)。我们提供了一系列专为 Codex 这类编码 智能体 设计的模型,例如 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex),但对于大多数代码生成任务,我们推荐使用最新的通用模型。 -参见 [ChatGPT 文档](https://developers.openai.com/codex) 以获取设置指南、参考材料、定价和更多信息。 +请参阅 [ChatGPT 文档](https://developers.openai.com/codex) 获取设置指南、参考资料、价格及更多信息。 -## 与编码模型集成 +## 与编程模型集成 -对于大多数基于 API 的代码生成,从 **`gpt-5.6`**。开始。它同时处理通用任务和编码,使其成为你的应用程序需要在同一处编写代码、推理需求、查阅文档和处理更广泛工作流时的强默认选择。 +对于大多数基于API的代码生成,请从 **`gpt-5.6`**。开始。它既可以处理通用任务,也可以处理编码任务,因此当你的应用需要在同一处完成代码编写、需求推理、文档查阅以及更广泛的工作流处理时,它是一个很好的默认选择。 -此示例展示了如何使用 [Responses API](https://developers.openai.com/api/reference/resources/responses) 来处理代码生成用例: +下面的示例展示了如何将 [Responses API](https://developers.openai.com/api/reference/resources/responses) 用于代码生成场景: 大多数编码任务的默认模型 @@ -162,12 +162,12 @@ curl https://api.openai.com/v1/responses \ ## 前端开发 -我们来自 GPT-5 系列的模型在前端开发方面尤为出色,尤其是在与诸如 Codex 等编码智能体框架结合使用时。 +GPT-5 系列模型在前端开发方面尤为出色,尤其是与 Codex 等编码智能体框架结合使用时。 -下面的演示应用是单次生成的,即仅通过单个提示词生成,没有手写代码。使用它们来评估前端生成质量和界面密集型代码生成工作流的提示词模式。 +以下演示应用是一次性生成的,即由单条提示生成,没有手写代码。可使用它们评估前端生成质量以及面向 UI 的代码生成工作流的提示模式。 ## 后续步骤 -- 请访问 [ChatGPT 文档](https://developers.openai.com/codex) 了解你可以用 Codex 做什么,在你选择的界面中设置 Codex,或查找更多详细信息。 -- 阅读 [模型指南](https://developers.openai.com/api/docs/guides/latest-model) 了解适用于编码和智能体任务中的模型选择、功能、迁移指南和提示模式。 -- 在模型页面上比较 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex) 。 \ No newline at end of file +- 访问 [ChatGPT 文档](https://developers.openai.com/codex) ,了解 Codex 的功能、在你选择的界面中配置 Codex,或查找更多详细信息。 +- 阅读 [模型指南](https://developers.openai.com/api/docs/guides/latest-model) ,获取模型选择、功能、迁移指南以及在编码和智能体任务中效果良好的提示模式。 +- 在模型页面中比较 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 和 [`gpt-5.3-codex`](https://developers.openai.com/api/docs/models/gpt-5.3-codex) 。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/compaction.md b/docs/zh/api/docs/guides/compaction.md index d1a1902..0efc061 100644 --- a/docs/zh/api/docs/guides/compaction.md +++ b/docs/zh/api/docs/guides/compaction.md @@ -7,46 +7,46 @@ 为了支持长时间运行的交互,你可以使用压缩来减少上下文 大小,同时保留后续轮次所需的状态。 -随着对话的增长,压缩有助于你在质量、成本和延迟之间取得平衡。 +随着对话增长,压缩可帮助你平衡质量、成本和延迟。 ## 服务端压缩 你可以在 Responses 创建请求中启用服务端压缩 -(`POST /responses` 或 `client.responses.create`)通过设置 -`context_management` 与 `compact_threshold`. - -- 当渲染后的 token 数超过配置的阈值时,服务器 - 会运行服务端压缩。 -- 在此模式下,无需 `/responses/compact` 单独调用。 -- 响应流中包含加密的压缩项。 -- ZDR 说明:当你在 Responses 创建请求中设置 `store=false` - 时,服务端压缩对 ZDR 友好。 - -返回的压缩条目会将关键的先前的状态和推理延续到 -下一次运行,同时使用更少的令牌。它是不透明的,并非用于 +(`POST /responses` 或 `client.responses.create`)通过设置 +`context_management` 使用 `compact_threshold`. + +- 当渲染后的 token 数量超过配置的阈值时,服务端 + 会执行 服务端 压缩。 +- 无需单独 `/responses/compact` 在此模式下发起调用。 +- 响应流中会包含加密的压缩条目。 +- ZDR 说明:当你将 服务端 压缩设置为 `store=false` + 在 Responses 创建请求中时,该压缩对 ZDR 友好。 + +返回的压缩条目会将先前关键状态和推理带入 +下一次运行,且使用的 token 更少。该条目是不透明的,无需 人工解读。 -对于无状态输入数组链式调用,照常追加输出条目。如果你正在 -使用 `previous_response_id`,每轮仅传递新的用户消息。在两种 -情况下,压缩条目都会携带下一窗口所需的上下文。 +对于无状态的输入数组链接,照常追加输出条目。如果你 +使用 `previous_response_id`,则每次只传入新的用户消息。在这两种 +情况下,压缩条目都会承载下一个窗口所需的上下文。 -延迟提示:在将输出条目追加到之前的输入条目后,你可以 -丢弃最近一次压缩条目之前的条目,以保持请求 -更小并减少长尾延迟。最新的压缩条目携带 -继续对话所需的上下文。如果你使用 -`previous_response_id` 链式调用,请勿手动修剪。 +延迟提示:在将输出条目追加到先前的输入条目之后,你可以 +丢弃最近压缩条目之前的条目,以保持请求 +体积更小并降低长尾延迟。最新压缩条目承载着 +继续对话所需的必要上下文。如果你使用 +`previous_response_id` 链接,请勿手动裁剪。 ## 用户旅程 -1. 调用 `/responses` 照常进行,但需包含 `context_management` 并配合 +1. 像往常一样调用 `/responses` ,但传入 `context_management` ,并附带 `compact_threshold` 以启用服务端压缩。 -2. 当响应流式传输时,若上下文大小超过阈值,服务器将 - 触发一次压缩过程,在同一流中发出一个压缩输出项, - 并在继续推理前修剪上下文。 -3. 继续你的循环,使用以下两种模式之一:无状态输入数组链式传递(将输出, - 包括压缩项,追加到你的下一个输入数组)或 - `previous_response_id` 链式传递(每轮仅传递新的用户消息,并 - 向前携带该 ID)。 +2. 在响应流式传输过程中,如果上下文大小超过阈值,服务端 + 会触发一次压缩过程,在同一流中输出一个压缩输出项, + 并在继续推理前裁剪上下文。 +3. 用统一模式延续你的循环:无状态输入数组链式调用(将 + 输出(包括压缩项)追加到下一次输入数组),或者 + `previous_response_id` 链式调用(每轮只传入新的用户消息,并 + 在后续轮次中传递该 ID)。 @@ -224,36 +224,36 @@ puts(next_response.output_text) ## 独立紧凑端点 -如需显式控制,请使用 -[独立紧凑端点](https://developers.openai.com/api/reference/resources/responses/methods/compact) 进行 -长时间运行工作流中的无状态压缩。 +如需进行显式控制,请使用 +[独立的 compact 接口](https://developers.openai.com/api/reference/resources/responses/methods/compact) 在长时间运行的工作流中进行 +无状态的上下文压缩。 -该端点完全无状态,且符合 ZDR 要求。 +该接口完全无状态且兼容 ZDR。 -你发送完整的上下文窗口(消息、工具和其他项目), -端点返回一个新的压缩上下文窗口,你可以在下一次 -`/responses` 调用时传入。 +你发送一个完整的上下文窗口(消息、工具以及其他项),该 +接口会返回一个新的已压缩上下文窗口,你可以将其传递给下一次 +`/responses` 调用。 -返回的压缩窗口包含一个加密的压缩项目,它携带 -先前的关键状态和推理,并使用更少的令牌。它是透明的,且不 -旨在供人类解读。 +返回的已压缩窗口包含一个加密的压缩项,该项使用更少的 token +携带先前的关键状态与推理信息。它是不透明的,并不需要 +人类可读。 -注意:压缩窗口通常包含的不仅仅是压缩 -项目,还可能包含上一窗口中的保留项目。 +注意:已压缩的窗口通常不仅仅包含压缩 +项,它还可以包含来自上一个窗口的保留项。 -输出处理:不要删减 `/responses/compact` 输出。返回的窗口 -是规范的下一个上下文窗口,因此请将其原样传入下一次 `/responses` +输出处理:不要裁剪 `/responses/compact` 输出。返回的窗口 +是规范的下一次上下文窗口,因此请将其原样传递给下一次 `/responses` 调用。 ### 独立压缩的用户旅程 -1. 使用 `/responses` 时,可以正常发送包含用户消息、 - 智能体输出和工具交互的输入项。 -2. 当你的上下文窗口变得很大时,调用 `/responses/compact` 来生成一个 - 新的压缩后的上下文窗口。发送给 `/responses/compact` - 的窗口仍必须适配于你模型的上下文窗口。 -3. 对于后续的 `/responses` 调用,请将返回的压缩窗口 - (包括压缩项)作为输入,而不是完整的对话记录。 +1. 使用 `/responses` 正常方式,发送的输入项包含用户消息、 + 助手输出和工具交互。 +2. 当你的上下文窗口变大时,调用 `/responses/compact` 来生成一个 + 新的压缩后上下文窗口。你发送给 `/responses/compact` + 的内容仍必须适合你模型的上下文窗口。 +3. 对于后续的 `/responses` 调用,传入返回的压缩后窗口 + (包含压缩项)作为输入,而不是完整的对话记录。 diff --git a/docs/zh/api/docs/guides/completions.md b/docs/zh/api/docs/guides/completions.md index cc8042b..7c24867 100644 --- a/docs/zh/api/docs/guides/completions.md +++ b/docs/zh/api/docs/guides/completions.md @@ -1,10 +1,10 @@ -# 补全 API +# Completions API -> 完整文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 -completions API 端点在 2023 年 7 月进行了最后一次更新,其接口与新的 Chat Completions 端点不同。输入不再是消息列表,而是一个自由格式的文本字符串,称为 `prompt`. +completions API 端点在 2023 年 7 月收到了最后一次更新,其接口与新的 Chat Completions 端点不同。输入不是一个消息列表,而是一段自由格式的文本字符串,称为 `prompt`. -一个旧的 Completions API 调用示例如下: +一个旧版 Completions API 调用示例如下: ```javascript const completion = await openai.completions.create({ @@ -55,50 +55,50 @@ puts(completion.choices.fetch(0).text) ``` -查看完整 [API 参考文档](https://platform.openai.com/docs/api-reference/completions) 以了解更多信息。 +请参阅完整的 [API 参考文档](https://platform.openai.com/docs/api-reference/completions) 以了解更多信息。 #### 插入文本 -完成端点(completions endpoint)还支持通过提供 [suffix](https://developers.openai.com/api/reference/resources/completions/methods/create#completions-create-suffix) 来插入文本,而标准提示词则被视为前缀。这种需求自然出现在编写长文本、段落过渡、遵循大纲或引导模型走向结尾时。这也适用于代码,可用于在函数或文件中间插入。 +completions 端点还支持通过提供 [suffix](https://developers.openai.com/api/reference/resources/completions/methods/create#completions-create-suffix) 来插入文本,作为被视为前缀的标准提示的补充。这种需求在撰写长篇文本、在段落之间过渡、遵循大纲或将模型引导至结尾时自然产生。它同样适用于代码,可用于在函数或文件的中间插入内容。 -为了说明后缀上下文如何影响生成的文本,考虑提示词:“今天我决定做出重大改变。”想象完成这个句子的方式有很多种。但如果我们现在提供故事结尾:“我的新发型得到了很多赞美!”那么预期的完成方式就变得清晰了。 +为了说明后缀上下文如何影响生成的文本,可以考虑提示“Today I decided to make a big change.”这个句子有许多种可以想象的补全方式。但如果我们提供故事的结尾:“I’ve gotten many compliments on my new hair!”,那么预期的补全内容就变得清晰了。 -> 我在波士顿大学读的大学。拿到学位后,我决定做出改变**。一个巨大的改变!** +> 我在波士顿大学读的大学。拿到学位后,我决定做出一个改变**。一个巨大的改变** -> **我收拾好行囊,搬到了美国西海岸。** +> **我收拾行囊,搬到了美国西海岸。** -> 现在,我对太平洋的喜爱简直欲罢不能! +> 现在,我对太平洋简直爱不释手! -通过为模型提供额外的上下文,它可以更具可引导性。然而,这对模型来说是一项更受约束且更具挑战性的任务。为了获得最佳结果,我们建议如下: +为模型提供额外上下文,可以显著提升其可控性。不过,这对模型而言是更具约束性、更具挑战性的任务。为获得最佳效果,我们建议你遵循以下几点: -**使用 `max_tokens` > 256。** 模型更擅长插入较长的补全内容。如果 `max_tokens`,过小,模型可能在连接后缀之前就被截断。请注意,即使使用较大的 `max_tokens`. +**使用 `max_tokens` > 256。** 模型在插入较长的补全内容时表现更好。如果 `max_tokens`,设置过小,模型可能还没来得及连接到后缀就被截断。请注意,即使使用更大的 `max_tokens`. -**,也只需为生成的 token 数量付费。优先选择 `finish_reason` == "stop"。** 当模型达到自然的停止点或用户提供的停止序列时,它会将 `finish_reason` 设置为"stop"。这表示模型已成功连接到后缀,是补全质量的良好信号。这在 n > 1 或重新采样时(参见下一点)选择几个补全结果时尤其重要。 +**优先选择 `finish_reason` == "stop"。** 当模型到达自然停止点或用户提供 stop 序列时,它会将 `finish_reason` 设为 "stop"。这表明模型已经很好地连接到了后缀,也是补全质量的一个良好信号。在 n > 1 或重采样的多个补全中进行选择时,这一点尤为相关(见下一条)。 -**重新采样 3-5 次。** 虽然几乎所有补全都能连接到前缀,但在较难的情况下,模型可能难以连接后缀。我们发现重新采样 3 或 5 次(或使用 k=3,5 的 best_of),并选择 `finish_reason` 为"stop"的样本,在这种情况下可能是一种有效的方法。在重新采样时,通常会希望使用更高的温度来增加多样性。 +**重采样 3 到 5 次。** 虽然几乎所有补全都能连接到前缀,但在较难的情况下,模型可能难以连接到后缀。我们发现,在这种情况下,重采样 3 次或 5 次(或使用 k=3、5 的 best_of),并挑选将 "stop" 作为其 `finish_reason` 的样本,是一种有效的方式。在重采样时,通常可以适当提高 temperature 以增加多样性。 -注意:如果所有返回的样本的 `finish_reason` == "length",则可能是 max_tokens 过小,模型在自然连接提示和后缀之前就用完了 token。请考虑在重新采样之前增加 `max_tokens` 。 +注意:如果所有返回的样本都是 `finish_reason` == "length",这很可能意味着 max_tokens 过小,模型在自然连接上 prompt 和后缀之前就用尽了 token。请考虑在重采样之前增大 `max_tokens` 。 -**尝试提供更多线索。** 在某些情况下,为了更好地帮助模型生成,你可以通过给出一些模型可以遵循的模式示例来提供线索,以决定自然停止的位置。 +**尝试给出更多提示。** 在某些情况下,为了更好地引导模型的生成,你可以给出一些模式示例作为提示,让模型据此判断一个自然的停止位置。 -> 如何制作一杯美味的热巧克力: +> 如何制作美味的热巧克力: > -> 1.** 烧开水** -> **2. 将热巧克力放入杯中** -> **3. 将开水倒入杯中** 4. 享用热巧克力 +> 1.** 烧水** +> **2. 将热巧克力粉倒入杯中** +> **3. 把沸水倒入杯中** 4. 享用热巧克力 > 1. 狗是忠诚的动物。 > 2. 狮子是凶猛的动物。 -> 3. 海豚** 是顽皮的动物。** -> 4. 马是威武的动物。 +> 3. 海豚** 是爱玩耍的动物。** +> 4. 马是雄伟的动物。 -### 补全响应格式 +### Completions 响应格式 -一个示例性补全 API 响应如下所示: +一个示例 completions API 响应如下所示: ``` { @@ -122,63 +122,63 @@ puts(completion.choices.fetch(0).text) } ``` -在 Python 中,可以使用以下方式提取输出: `response['choices'][0]['text']`. +在 Python 中,可以使用以下方式提取输出 `response['choices'][0]['text']`. 响应格式与 Chat Completions API 的响应格式类似。 ### 插入文本 -completions 端点还支持通过提供 [suffix](https://developers.openai.com/api/reference/resources/completions/methods/create#completions-create-suffix) 来插入文本,此外还有被视为前缀的标准提示词。这种需求在撰写长文、段落间过渡、遵循大纲或引导模型走向结尾时自然会出现。这也适用于代码,并且可以用于在函数或文件的中间插入内容。 +completions 端点还支持通过提供 [suffix](https://developers.openai.com/api/reference/resources/completions/methods/create#completions-create-suffix) 来插入文本,作为被视为前缀的标准提示的补充。这种需求在撰写长篇文本、在段落之间过渡、遵循大纲或将模型引导至结尾时自然产生。它同样适用于代码,可用于在函数或文件的中间插入内容。 -为了说明后缀上下文如何影响生成的文本,请考虑提示词:“今天我决定做出一个重大改变。”可以想象完成这个句子的方式有很多种。但如果我们现在提供故事的结尾:“我的新发型收到了很多赞美!”,预期的完成方式就变得清晰了。 +为了说明后缀上下文如何影响生成的文本,可以考虑提示“Today I decided to make a big change.”这个句子有许多种可以想象的补全方式。但如果我们提供故事的结尾:“I’ve gotten many compliments on my new hair!”,那么预期的补全内容就变得清晰了。 -> 我在波士顿大学上的大学。拿到学位后,我决定做出改变**。一个巨大的改变!** +> 我在波士顿大学读的大学。拿到学位后,我决定做出一个改变**。一个巨大的改变** -> **我收拾好行李,搬到了美国西海岸。** +> **我收拾行囊,搬到了美国西海岸。** -> 现在,我对太平洋怎么也看不够! +> 现在,我对太平洋简直着迷了! -通过为模型提供更多上下文,可以使其更容易操控。然而,这对模型来说是一项更具约束性和挑战性的任务。为获得最佳结果,我们建议如下: +为模型提供额外上下文,可以显著提升其可控性。不过,这对模型而言是更具约束性、更具挑战性的任务。为获得最佳效果,我们建议你遵循以下几点: -**使用 `max_tokens` > 256。** 模型在插入较长的补全时表现更好。如果 `max_tokens`,太小,模型可能在连接到后缀之前就被截断。请注意,即使使用更大的 `max_tokens`. +**使用 `max_tokens` > 256。** 模型在插入较长的补全内容时表现更好。如果 `max_tokens`,设置过小,模型可能还没来得及连接到后缀就被截断。请注意,即使使用更大的 `max_tokens`. -**优先选择 `finish_reason` == "stop"。** 当模型达到自然停止点或用户提供的停止序列时,它会将 `finish_reason` 设置为"stop"。这表明模型已良好地连接到后缀,是补全质量的良好信号。这在选择 n > 1 或重采样时的几个补全中尤其相关(见下一点)。 +**优先选择 `finish_reason` == "stop"。** 当模型到达自然停止点或用户提供 stop 序列时,它会将 `finish_reason` 设为 "stop"。这表明模型已经很好地连接到了后缀,也是补全质量的一个良好信号。在 n > 1 或重采样的多个补全中进行选择时,这一点尤为相关(见下一条)。 -**重采样 3-5 次。** 虽然几乎所有的补全都能连接到前缀,但在更复杂的情况下,模型可能难以连接到后缀。我们发现重采样 3 或 5 次(或使用 k=3,5 的 best_of)并选择 `finish_reason` 为"stop"的样本,在这种情况下是一种有效的方法。在重采样时,你通常需要更高的温度以增加多样性。 +**重采样 3 到 5 次。** 虽然几乎所有补全都能连接到前缀,但在较难的情况下,模型可能难以连接到后缀。我们发现,在这种情况下,重采样 3 次或 5 次(或使用 k=3、5 的 best_of),并挑选将 "stop" 作为其 `finish_reason` 的样本,是一种有效的方式。在重采样时,通常可以适当提高 temperature 以增加多样性。 -注意:如果所有返回的样本的 `finish_reason` == "length",则可能是 max_tokens 太小,模型在自然连接提示和后缀之前就用完了令牌。考虑在重采样前增加 `max_tokens` 。 +注意:如果所有返回的样本都是 `finish_reason` == "length",这很可能意味着 max_tokens 过小,模型在自然连接上 prompt 和后缀之前就用尽了 token。请考虑在重采样之前增大 `max_tokens` 。 -**尝试提供更多线索。** 在某些情况下,为了更好地帮助模型生成,你可以通过提供一些模式示例来给出线索,让模型遵循这些模式来决定自然的停止位置。 +**尝试给出更多提示。** 在某些情况下,为了更好地引导模型的生成,你可以给出一些模式示例作为提示,让模型据此判断一个自然的停止位置。 -> 如何制作一杯美味的热巧克力: +> 如何制作美味的热巧克力: > > 1.** 烧水** -> **2. 将热巧克力放入杯中** -> **3. 将沸水倒入杯中** 4. 享用热巧克力 +> **2. 将热巧克力粉倒入杯中** +> **3. 把沸水倒入杯中** 4. 享用热巧克力 > 1. 狗是忠诚的动物。 > 2. 狮子是凶猛的动物。 -> 3. 海豚** 是顽皮的动物。** -> 4. 马是高贵的动物。 +> 3. 海豚** 是爱玩耍的动物。** +> 4. 马是雄伟的动物。 -## Chat Completions 与 Completions +## Chat Completions vs. Completions -通过使用单条用户消息构造请求,可以使 Chat Completions 格式与 completions 格式相似。例如,可以通过以下 completions 提示将英语翻译为法语: +Chat Completions 格式可以通过构造只包含单个用户消息的请求,使其与 completions 格式类似。例如,可以使用以下 completions 提示词实现从英语到法语的翻译: ``` Translate the following English text to French: "{text}" ``` -等效的聊天提示为: +与之等价的 chat 提示词如下: ``` [{"role": "user", "content": 'Translate the following English text to French: "{text}"'}] ``` -同样,completions API 可以通过格式化输入来模拟用户与助手之间的聊天, [相应地](https://platform.openai.com/playground/p/default-chat?model=gpt-3.5-turbo-instruct). +同理,completions API 也可以通过对输入进行相应格式化来模拟用户与助手之间的对话, [如下所示](https://platform.openai.com/playground/p/default-chat?model=gpt-3.5-turbo-instruct). -这些 API 之间的区别在于各自可用的底层模型。Chat Completions API 支持当前的 GPT 模型,例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 以及成本较低的选择,例如 [`gpt-5.6-terra`](https://developers.openai.com/api/docs/models/gpt-5.6-terra). \ No newline at end of file +这些 API 之间的区别在于各自可用的底层模型。Chat Completions API 支持当前的 GPT 模型,例如 [`gpt-5.6`](https://developers.openai.com/api/docs/models/gpt-5.6-sol) 以及更低成本的选项,例如 [`gpt-5.6-terra`](https://developers.openai.com/api/docs/models/gpt-5.6-terra). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/content-provenance.md b/docs/zh/api/docs/guides/content-provenance.md index 908beed..e15d34d 100644 --- a/docs/zh/api/docs/guides/content-provenance.md +++ b/docs/zh/api/docs/guides/content-provenance.md @@ -1,52 +1,52 @@ # 内容来源 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整的文档索引请参阅 [llms.txt](/llms.txt)。在页面 URL 末尾追加 `.md` 即可获取该页面的 Markdown 版本。 -使用内容来源 API 检查图像或音频文件是否包含 -受支持的 OpenAI 来源信号。将文件发送到 -`POST /v1/content_provenance_checks` 以在同一响应中接收完整的验证 +使用 Content Provenance API 来检查图像或音频文件是否包含 +支持的 OpenAI 来源信号。将文件发送到 +`POST /v1/content_provenance_checks` 以在同一个响应中接收完整的验证 结果。在内容审核、 -事实核查、标签标注以及信任与安全工作流中使用这些信号。 +事实核查、标注以及信任与安全工作流中使用这些信号。 -要在浏览器中检查文件,请使用以下网页工具: +若要在浏览器中检查文件,请使用以下网页工具: [openai.com/verify](https://openai.com/verify/). -有关请求参数和响应模式,请参阅 -[内容来源 API 参考](https://developers.openai.com/api/reference/resources/content_provenance_checks/methods/create). +有关请求参数和响应架构,请参阅 +[Content provenance API 参考](https://developers.openai.com/api/reference/resources/content_provenance_checks/methods/create). -A `not_detected` 结果表示工具在 - 上传的文件中未找到受支持的信号。如果内容元数据 - 被剥离或显示被篡改的迹象、其水印已退化、它 - 来自旧版生成模型,或它在来源 - 信号可用之前创建,则内容仍可能由 OpenAI 生成。该工具目前无法检测由 - 其他公司的 AI 模型生成的内容,因此 `not_detected` 结果并不能排除这种情况 - 。 +一个 `not_detected` 结果表示该工具在上传文件中未找到支持的信号。如果元数据被去除或显示出篡改痕迹、水印被削弱、文件来自旧版生成模型,或者在来源信号推出之前生成,相应内容仍可能由 OpenAI 生成。 + 该工具当前无法检测由另一家公司的 AI 模型生成的内容,因此 + 结果也无法排除这种可能。 + result means the tool didn't find supported signals in the + uploaded file. Content may still have been generated by 该公司 if its metadata + was stripped or shows evidence of tampering, its watermark was degraded, it `not_detected` came from a legacy generation model, or it was created before provenance + signals were available. The tool doesn't currently detect content generated by。 -## 内容来源检查 +## 内容来源检测 -内容来源检查对以下信号支持的文件进行检测: +内容溯源检查支持以下信号的文件: -| 信号 | 适用范围 | 检查内容 | +| Signal | 适用范围 | 检测内容 | | ------------------------ | ---------------- | ------------------------------------------------ | -| C2PA 内容凭证 | 图片 | 带有签发方和 AI 使用详情签名元数据 | -| SynthID | 图片和音频 | 直接嵌入受支持媒体中的水印 | +| C2PA Content Credentials | 图像 | 包含签发者和 AI 使用详情的签名元数据 | +| SynthID | 图像和音频 | 直接嵌入到受支持媒体中的水印 | -C2PA 元数据提供关于文件来源的更多上下文。编辑、转换, -或共享文件可能会移除其元数据。SynthID 水印是 -图像或音频本身的一部分,可能在某些变换后仍然存在。 +C2PA 元数据可提供有关文件来源的更多上下文。编辑、转换, +或共享文件可能会移除其元数据。SynthID 水印是图像或音频本 +身的一部分,可能会在某些转换后保留下来。 -API 会检查受支持的 OpenAI 信号。它并非通用 AI -检测器,也不会识别所有 AI 系统生成的内容。可见的 -水印和标签与检查来源信号所依据的 -API 相互独立。 +API 会检查受支持的 OpenAI 信号。它不是通用的 AI +检测器,无法识别每个 AI 系统生成的内容。可见的水印与标识不同于 API 所检查的来源信号。 +检测器,无法识别每个 AI 系统生成的内容。可见的水印与标识不同于 接口 所检查的来源信号。 +检测器,无法识别每个 AI 系统生成的内容。可见的水印与标识不同于 接口 所检查的来源信号。 ## 验证文件 -将图片或音频文件作为 `file` 字段发送,使用OpenAI SDK。该SDK +将图像或音频文件作为 `file` 字段,配合 OpenAI SDK 一起发送。SDK 会构建 multipart 请求,并从 `OPENAI_API_KEY` -环境变量中读取你的API密钥: +环境变量中读取你的 API 密钥: -验证图片 +验证图像 ```python from openai import OpenAI @@ -113,10 +113,10 @@ curl https://api.openai.com/v1/content_provenance_checks \ ``` -请使用这些OpenAI SDK版本或更高版本:Python 2.52.0、Go 3.49.0 和 Ruby +请使用以下 OpenAI SDK 版本或更高版本:Python 2.52.0、Go 3.49.0,以及 Ruby 0.75.0。 -要验证 Opus 音频,请使用同一端点,并将上传文件的媒体 +若要验证 Opus 音频,请使用同一个端点,并将上传文件的媒体 类型设置为 `audio/ogg`: ```bash @@ -125,7 +125,7 @@ curl https://api.openai.com/v1/content_provenance_checks \ -F "file=@./example.opus;type=audio/ogg" ``` -响应包含完成的结果。例如,图片返回: +响应中会包含完整的结果。例如,图像会返回: ```json { @@ -150,30 +150,30 @@ curl https://api.openai.com/v1/content_provenance_checks \ } ``` -该 `object` 字段标识响应,而 `created_at` 是检查的 -创建时间,以 Unix 时间戳(秒)表示。中的条目 `results` 取决于 -上传的文件:图片包含 C2PA 和 SynthID 结果,音频包含 -SynthID 结果。API 会省略不适用的检查,而不是返回 +该 `object` 字段标识该响应, `created_at` 是此次检查的 +创建时间,以 Unix 时间戳(秒)表示。 `results` 中的条目取决于 +上传的文件:图像包含 C2PA 和 SynthID 结果,音频包含 +SynthID 结果。API 会省略不适用的检查项,而不是返回 `not_detected`. -API 在返回前完成验证。你无需创建 -后台任务、轮询其他端点或将文件上传到 Files API。 +API 会在返回之前完成验证。你无需创建 +后台任务、轮询其他端点,或将文件上传到 Files API。 -如果请求失败,请检查 HTTP 状态和 `error.code` 可用时。格式错误、不支持或 -被阻止的文件返回 `400`;没有 -访问权限的组织会收到 `404`;超过速率限制的请求返回 `429`。只重试 -瞬时故障,如速率限制或服务器错误。关于一般性指导, -请参阅 [API 错误码](https://developers.openai.com/api/docs/guides/error-codes). +如果请求失败,请检查 HTTP 状态码和 `error.code` 可用时使用。一个 +格式错误、不受支持或被阻止的文件会返回 `400`;没有访问权限的组织会收到 +;超过速率限制的请求会返回 `404`。仅对临时性失败(例如速率限制或服务器错误)进行重试。有关一般性指导, `429`。请参阅 +临时性失败(例如速率限制或服务器错误)进行重试。有关一般性指导, +参阅 [API 错误代码](https://developers.openai.com/api/docs/guides/error-codes). ## 了解验证结果 -请分别阅读每一条适用的条目 `results` 。图片结果包含 -C2PA 和 SynthID 条目,而音频结果包含 SynthID 条目。响应 -不包含顶层 `outcome`. +独立读取每个适用的条目。 `results` 图像结果包含 C2PA 和 SynthID 条目,而音频结果包含 SynthID 条目。 +C2PA 和 SynthID 条目,而音频结果包含 SynthID 条目。 +响应不包含顶层 `outcome`. ### C2PA 结果 -C2PA 结果描述了图像内容凭证的状态: +C2PA 结果描述图像内容凭证的状态: ```json { @@ -188,28 +188,28 @@ C2PA 结果描述了图像内容凭证的状态: 字段使用方式如下: -- `outcome` 指示是否使用了 OpenAI 发布的 AI 生成凭据 +- `outcome` 指示 OpenAI 颁发的 AI 生成凭据是否被 `detected` 或 `not_detected`. -- `validation_state` 指示清单是否 `trusted`, `valid`, - `invalid`,或 `not_present`. -- `issuer` 标识清单签发者(当该信息可用时)。 -- `model` 标识生成模型(当该信息可用时)。 -- `generated_at` 标识内容的生成时间(当该信息 - 可用时)。 - -结果只有在 `detected` 仅当 `trusted` 或 `valid` 清单识别 -OpenAI为其签发者并包含 AI 生成操作时才成立。第三方 -清单、没有 AI 生成操作的清单、 `invalid` 清单或 -一 `not_present` 清单会产生 `not_detected`。这些 `issuer` 和 -`validation_state` 仍然可以描述清单,即使结果是 +- `validation_state` 指示清单是否被 `trusted`, `valid`, + `invalid`,还是 `not_present`. +- `issuer` 在可用时标识清单的颁发方。 +- `model` 在可用时标识生成模型。 +- `generated_at` 在可用时标识内容的生成时间, + 。 + +该结果仅在 `detected` 清单中才会出现,即当一份 `trusted` 或 `valid` 清单将 OpenAI 标识为其颁发者并包含一项 AI 生成操作时。 +不包含 AI 生成操作的清单、或非 C2PA 清单,均不会产生该结果。该结果只能表明一张图像附带了有效的 C2PA 清单: +第三方清单、不含 AI 生成操作的清单、或 `invalid` 清单,均不会 +一个 `not_present` 清单会产生该结果 `not_detected`。该 `issuer` 和 +`validation_state` 仍然可以在结果为 `not_detected`. -不要将 `invalid` 清单视为可靠的来源证据。一个 +不要将缺少 `invalid` 清单的图像视为可靠的来源证据。 `not_present` 结果意味着该图像没有可用的 C2PA 清单。 ### SynthID 结果 -SynthID 结果描述验证器是否在图像或音频文件中检测到受支持的水印 +SynthID 结果用于描述验证器是否在图像或音频文件中检测到支持的水印 : ```json @@ -221,11 +221,11 @@ SynthID 结果描述验证器是否在图像或音频文件中检测到受支持 } ``` -的结果表示 `detected` 文件包含可识别的水印。 -的结果表示 `not_detected` 验证器未检测到该水印。这 -并不排除 AI 生成或 AI 修改的内容。 `model` 和 +结果为 `detected` 表示文件包含已识别的水印。结果为 +表示 `not_detected` 表示验证器未检测到该水印。这 +并不排除内容是由 AI 生成或由 AI 修改的可能。 `model` 和 `generated_at` 在可用时提供生成模型和生成时间; -任一字段都可能为 `null`. +任一字段都可以 `null`. ## 支持的格式与可用性 @@ -234,45 +234,45 @@ API 支持以下文件格式: - **图像:** PNG、JPEG 和 WebP。 - **音频:** MP3、Opus、AAC、FLAC、WAV 和 PCM。 -将每个上传文件限制为 50 MiB。音频在解码后必须为 60 秒或更短 -。 +将每个上传的文件限制为 50 MiB 以内。音频解码后时长必须不超过 60 秒。 +解码。 -设置上传 `file` 部分的媒体类型。例如,使用 `image/png` 用于 PNG -图片或 `audio/ogg` 用于 Opus 音频。不要添加单独的 `type` 字段或 -手动设置 `multipart/form-data` 请求头。该 `curl` `-F` 选项 -设置请求内容类型和多部分边界。每个请求发送一个文件。 +设置上传 `file` 部分的媒体类型。例如,使用 `image/png` 表示 PNG +图像,或 `audio/ogg` 表示 Opus 音频。不要添加单独的 `type` 字段或 +手动设置 `multipart/form-data` 请求头。 `curl` `-F` 选项 +会设置请求内容类型和 multipart boundary。每个请求只发送一个文件。 -内容来源检查不符合 +内容来源检查不适用于 [零数据保留](https://developers.openai.com/api/docs/guides/your-data#zero-data-retention). -严格的速率限制有助于保护 API 免受滥用。组织可以 -[申请更高的限制](https://openai.com/form/content-provenance-api/),并且 +严格的速率限制有助于保护 API 免遭滥用。组织可以 +[申请更高的限额](https://openai.com/form/content-provenance-api/),并且 OpenAI 会逐案审核每份申请。 -如果 API 返回 `429 rate_limit_exceeded`,请降低请求速率并 -遵循 `Retry-After` 中的头部(若存在)。参见 -[限速指南](https://developers.openai.com/api/docs/guides/rate-limits) 获取常规重试建议。 +如果 API 返回 `429 rate_limit_exceeded`,请降低你的请求速率并 +honor the `Retry-After` header when present. See +[速率限制](https://developers.openai.com/api/docs/guides/rate-limits) 以了解常规重试指南。 ## 负责任地使用验证结果 -在更广泛的审核流程中,将验证结果用作证据: +在更广泛的审查流程中,将验证结果作为依据: -- 将 `detected` 视为特定受支持信号的证据,而非完整的 - 文件历史。 -- 将 `not_detected` 视为未检测到证据,而非证明该 - 内容是人工创作或未使用 OpenAI 生成。 -- 将图像归因于特定提供商前,请检查 C2PA 签发者。 -- 尽可能核实原始文件。压缩、裁剪、截图、 - 元数据移除和格式转换可能消除或削弱信号。 -- 考虑来源产品、模型、文件格式和创建日期。 +- 将 `detected` 视为特定受支持信号的证据,而非文件的完整 + 历史记录。 +- 将 `not_detected` 视为未检测到相关证据,而非证明该 + 内容是人类创作或未使用 OpenAI 生成。 +- 在将图像归属于特定提供方之前,请先检查 C2PA 颁发方。 +- 如有可能,请核实原始文件。压缩、裁剪、截屏、 + 元数据删除以及格式转换都可能会抹除或削弱信号。 +- 综合考虑来源产品、模型、文件格式以及创建日期。 并非所有 OpenAI 生成的内容都包含受支持的信号。 -- 在高风险工作流中,将自动化决策与人工审核相结合。 -- 不要使用重复查询来逆向工程、移除或规避水印。 -- 不要根据验证结果推断提示词、账户或个人创作者 - 。 +- 在高风险工作流中,将自动化决策与人工审核结合使用。 +- 不要通过重复查询来逆向工程、去除或规避水印。 +- 不要从验证 + 结果中推断提示词、账户或个人创建者。 -使用内容来源API须遵守 +使用 Content Provenance API 须遵守 [OpenAI 服务协议](https://openai.com/policies/services-agreement/). -有关平台级监控和保留设置的信息,请参阅 +有关全平台监控和保留设置的信息,请参阅 [数据控制](https://developers.openai.com/api/docs/guides/your-data). \ No newline at end of file diff --git a/docs/zh/api/docs/guides/cost-optimization.md b/docs/zh/api/docs/guides/cost-optimization.md index 346c15e..79d729c 100644 --- a/docs/zh/api/docs/guides/cost-optimization.md +++ b/docs/zh/api/docs/guides/cost-optimization.md @@ -1,27 +1,27 @@ # 成本优化 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt). 通过在页面 URL 末尾添加 `.md` 即可获取文档页面的 Markdown 版本。 -使用 OpenAI 模型时有多种降低成本的方法。成本和延迟通常是相互关联的;减少令牌和请求通常会加快处理速度。此外,OpenAI 的 Batch API 和灵活处理也是降低成本的额外方式。 +使用 OpenAI 模型时,可以通过多种方式降低成本。成本和延迟通常是相互关联的;减少令牌和请求通常会带来更快的处理速度。OpenAI 的 Batch API 和 flex 处理也是降低成本的其他方式。 ## 成本与延迟 -为降低延迟和成本,可考虑以下策略: +为降低延迟和成本,可以参考以下策略: -- **减少请求**:限制完成任务所需的必要请求数量。 -- **最小化令牌**:降低输入令牌数量,并优化模型输出的简洁性。 -- **选择更小的模型**:使用在降低成本和延迟的同时保持准确性的模型。 +- **减少请求**:限制完成任务所需的请求数量。 +- **最小化令牌用量**:降低输入令牌数量,并优化以获得更短的模型输出。 +- **选择更小的模型**:使用能够在降低成本和延迟的同时保持准确性的模型。 -要深入了解这些内容,请参阅我们的 [延迟优化](https://developers.openai.com/api/docs/guides/latency-optimization). +若要深入了解这些内容,请参阅我们的 [延迟优化](https://developers.openai.com/api/docs/guides/latency-optimization). -## 批量API +## Batch API -异步处理作业。批处理 API 提供一组直接的端点,允许你将一组请求收集到单个文件中,启动批处理作业以执行这些请求,在底层请求执行时查询该批处理的状态,并最终在批处理完成时检索收集到的结果。 +异步处理任务。Batch API 提供了一组简洁的端点,允许你将一组请求归集到一个文件中,启动批处理任务来执行这些请求,在底层请求执行时查询该批次的状态,并在批次完成后最终取回收集到的结果。 -[批处理 API 快速入门 →](https://developers.openai.com/api/docs/guides/batch) +[开始使用 Batch API →](https://developers.openai.com/api/docs/guides/batch) -## 灵活处理 +## Flex 处理 -以较慢的响应时间和偶尔的资源不可用为代价,显著降低 Chat Completions 或 Responses 请求的成本。适用于非生产环境或低优先级任务,如模型评估、数据增强或异步工作负载。 +通过接受更慢的响应速度和偶尔的资源不可用,可以显著降低 Chat Completions 或 Responses 请求的成本。非常适合非生产环境或低优先级任务,例如模型评估、数据增强或异步工作负载。 -[开始使用 flex processing →](https://developers.openai.com/api/docs/guides/flex-processing) \ No newline at end of file +[开始使用 flex 处理 →](https://developers.openai.com/api/docs/guides/flex-processing) \ No newline at end of file diff --git a/docs/zh/api/docs/guides/csam-guidance.md b/docs/zh/api/docs/guides/csam-guidance.md index 742ce71..189700d 100644 --- a/docs/zh/api/docs/guides/csam-guidance.md +++ b/docs/zh/api/docs/guides/csam-guidance.md @@ -1,6 +1,6 @@ # CSAM 指南 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 如需完整文档索引,请参阅 [llms.txt](/llms.txt). 文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 获得。 {/* This guide necessarily discusses sexual abuse, so these profanity heuristics don't apply. */} {/* vale alex.ProfanityMaybe = NO */} @@ -18,216 +18,216 @@ -## 构建时考虑儿童安全 +## 在设计时考虑儿童安全 OpenAI 对开发者有明确的儿童安全期望: -你有责任确保你的用户使用OpenAI服务时 -遵守适用法律,包括将儿童性虐待和剥削定为 -犯罪的法律。切勿使用OpenAI服务来剥削、危害或 -性化任何未满18岁的人。请参阅OpenAI。 +你负责确保你的用户在遵守适用法律的前提下使用 OpenAI 服务,包括 +将儿童性虐待和剥削定为犯罪的法律。切勿使用 OpenAI 服务来剥削、危及或 +将任何 18 岁以下的人性化。请参阅 OpenAI 。 +。 在线儿童性剥削和虐待影响一系列产品和服务, -包括那些并非针对儿童的产品。OpenAI希望帮助开发者了解应 -考虑采取哪些行动来应对这一虐待问题。 - -从尽可能早的阶段开始,考虑人们可能如何滥用你的产品。 -尽早开始,以便儿童安全防护能够随着你的产品扩展,而不是成为 -你在已经复杂的产品或系统中事后补救的东西。 -各种规模的开发团队和组织都应评估人们可能如何滥用其产品, -以造成一系列伤害,包括儿童性虐待材料 +包括那些并非针对儿童的产品和服务。OpenAI 希望帮助 +开发者了解应采取哪些行动来应对此类虐待行为。 + +从尽可能早的阶段开始,思考人们可能如何滥用你的产品。 +尽早开始,这样儿童安全保护措施可以与你一同扩展,而不是变成 +你试图在已经复杂的产品或系统中后期改造加入的东西。 +各种规模的开发团队和组织都应评估人们可能如何 +将其产品滥用于一系列危害,包括儿童性虐待材料 (CSAM)、诱骗、性勒索、儿童性化、直播 -虐待和贩卖——尤其是当他们的产品支持消息、内容 -上传、图像编辑、直播、发现或支付时。 +虐待以及人口贩运——特别是当他们的产品支持消息、内容 +上传、图像编辑、直播、发现或支付功能时。 -本资源重点介绍CSAM,并为开发者提供实用指导, -以保护儿童。 +本资源聚焦于 CSAM,并为开发者提供保护 +儿童的实用指导。 -## 从哪里开始 +## 从何处开始 -可能很难知道从哪里开始。正确的解决方案和 +从何处着手往往并不容易明确。合适的解决方案和 实施路径取决于你所在组织的规模、成熟度以及可用的 资源。 -以下清单是解决 CSAM 问题的良好起点。最 -重要的是开始应对风险:不要等到所有 -工具或步骤都完成后再采取行动。 +以下清单是一个良好的起点,可用于应对 CSAM 问题。 +重要的是要开始着手应对这一风险:不要等到所有 +工具或步骤都完备后才采取行动。 -## 防止 +## Prevent 为你的产品或服务设定明确的规则,并建立机制以 -听取用户关于其体验的反馈。 - -- **制定明确的规则。** 在你的服务条款、可接受使用政策或社区指南中 - 禁止儿童性剥削和虐待。了解更多信息,请参阅 - 或 Tech Coalition 的免费 - 资源,获取专家指导和实用工具,包括关于禁止在线儿童性剥削和虐待的外部 - 标准的资源。 -- **让你的用户可以进行举报。** 为用户提供可见的方式来标记 - 潜在有害内容或行为,并将这些顾虑转交到有足够信息制定政策决策的受监控队列 - 或位置。更多 - 指导,请参阅澳大利亚的 。 -- **通过安全标识符跟踪上传和用户。** 在你的产品或服务中, - 将每次上传与用户关联。向支持的 OpenAI - [发送 - 请求](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers) - 附带安全标识符可以帮助 OpenAI 监控和检测滥用。这可以帮助 OpenAI 为你的团队提供更多 - 可操作的反馈,如果 OpenAI 在你的 - 产品或服务中发现政策违规。安全标识符还可以帮助你的团队更快地应对滥用 - 。它们提供了一种稳定的方式,将 追踪 活动追踪到单个终端 - 用户,并降低某个用户滥用行为干扰您的 - 整个组织访问的可能性。使用唯一字符串表示每个用户。为保护 - 隐私,在发送前对电子邮件地址或用户名进行哈希处理,以避免 - 泄露个人身份信息。直接 Images API 使用 - 不同的参数用于此目的:发送相同的稳定标识符作为 - `user` 用于 [图像 - 生成](https://developers.openai.com/api/reference/resources/images/methods/generate) 和 [图像 - 编辑](https://developers.openai.com/api/reference/resources/images/methods/edit). - -当你准备采取更多措施时,可以考虑其他预防手段: - -- 增加对 CSAM 相关关键词的预防性阻止或拒绝 - 或 URL。了解更多信息请参阅 . -- 对试图从事 - CSAM 相关行为的用户提供警告或提示。了解更多信息请参阅 . -- 如果你的服务面向儿童开放,且用户告诉你你的平台上有他们的性 - 图片或视频,请引导他们联系支持服务 - ,例如 IWF 和 NSPCC 的项目,该项目 - 使英国的儿童能够举报图片和视频以将其删除或 - 屏蔽,也可联系 NCMEC 的服务。 -- 如果你得知儿童正面临直接或迫在眉睫的危险: - - 将案件转介至紧急服务部门,例如当地执法机构。 - - 向儿童提供如何联系紧急服务部门的信息。 - -## 检测 - -识别可能违规的内容或行为,以供审核和处理。 - -使用可访问的CSAM检测工具: +接收用户对其使用体验的反馈。 + +- **设定明确的规则。** 在你的服务条款、可接受使用政策或社区准则中禁止儿童性剥削和性侵害行为。 + of service, acceptable use policy, or community guidelines. Learn more from + or the Tech Coalition's free + for expert guidance and practical tools, including a resource on external + standards that prohibit online child sexual exploitation and abuse. +- **为用户提供举报渠道。** 为用户提供一个可见的方式来标记 + potentially harmful content or behavior, and route those concerns to a monitored queue + or location with enough information to make policy decisions. For more + guidance, see the Australian . +- **通过安全标识符追踪上传和用户。** 在你的产品或服务中, + 将每次上传与一个用户关联。通过 + [safety identifiers with supported OpenAI + requests](https://developers.openai.com/api/docs/guides/safety-best-practices#implement-safety-identifiers) + can help OpenAI monitor and detect abuse. This can help OpenAI provide your team with more + actionable feedback if OpenAI detects policy violations in your + 产品或服务中检测到的违规行为时,为你的团队提供更具可操作性的反馈。安全标识符还可以帮助你的团队更快地应对滥用行为。 + faster. They create a stable way to 追踪 activity back to an individual end + 用户并降低单个用户的滥用影响整个组织访问的可能性。 + 使用唯一字符串表示每个用户。为保护 + 隐私,在发送前对电子邮件地址或用户名进行哈希处理,避免 + 泄露个人身份信息。直接 Images API 使用一个 + 不同的参数来实现此目的:发送相同的稳定标识符作为 + `user` 用于 [image + generation](https://developers.openai.com/api/reference/resources/images/methods/generate) 和 [image + edits](https://developers.openai.com/api/reference/resources/images/methods/edit). + +当你准备进一步处理时,可以考虑采用其他预防措施: + +- 为 CSAM 相关关键词或 URL 添加以预防为重点的拦截或拒绝。 + 了解更多来自 . 的信息。 +- 向试图进行 + CSAM 相关行为的用户提供警告或提示信息。了解更多来自 。 +- 如果你的服务面向儿童开放,并且有用户告知其性相关 + 图像或视频出现在你的平台上,引导他们联系支持服务 + 机构,例如 IWF 和 NSPCC 的项目,该项目 + 允许英国的儿童举报相关图像和视频以便将其移除或 + 拦截,或使用 NCMEC 的服务。 +- 如果你发现儿童正面临紧急或迫在眉睫的伤害: + - 将案件移交紧急服务部门,例如当地执法机构。 + - 向该儿童提供如何联系紧急服务部门的信息。 + +## Detect + +识别潜在的违规内容或行为,以便进行审查和处置。 + +使用可访问的 CSAM 检测工具: - **感知哈希匹配。** 如果你的产品支持上传、存储或 - 处理视觉媒体,请考虑实施感知哈希匹配。该 - 技术会创建图像或视频的数字指纹,并将其与 - 已知 CSAM 的指纹进行比较,帮助识别已知 - 材料,即使有人调整大小、压缩或以其他方式修改文件也是如此。 - 你需要同时访问哈希匹配技术(如 PhotoDNA)和 CSAM - 哈希列表(即已知 CSAM 哈希的存储库)。并非所有服务 - 都提供两者。 + 处理视觉媒体,请考虑实现感知哈希匹配。该 + 技术会为图像或视频生成数字指纹,并将其与 + 已知 CSAM 的指纹进行比对,从而帮助识别已知 + 材料,即使有人对文件进行缩放、压缩或其他修改也能识别。 + 你需要同时获得哈希匹配技术(如 PhotoDNA)和 CSAM + 哈希列表(即已知 CSAM 哈希的存储库)。并非所有服务商 + 同时提供这两者。 - **推荐的哈希匹配技术:** - - 提供针对图像和视频中已知 CSAM 的专用检测。 - - Tech Coalition 通过其免费的 + - 针对图像和视频中的已知 CSAM 提供专用检测能力。 + - Tech Coalition 通过其免费项目向符合条件的企业授予该技术的分许可。 . - . - YouTube 的技术 - 提供哈希匹配来识别视频中的已知 CSAM。 + 提供哈希匹配功能,用于识别视频中的已知 CSAM。 - **推荐的 CSAM 哈希列表:** - - NCMEC 提供已知 CSAM、剥削性内容和生成式 AI - CSAM 的列表。请联系其 [电子服务提供商团队](mailto:espteam@ncmec.org). - - IWF 提供 ,一种 - 面向符合条件的初创企业和小型企业的哈希匹配服务,该服务 - 集成所需的技术专长极少。 -- **新颖的 CSAM 检测分类器。** 这些工具可以检测未知或未见过的 + - NCMEC 提供已知 CSAM、剥削性内容以及生成式 AI + CSAM 的相关列表。请联系其 [Electronic Service Provider 团队](mailto:espteam@ncmec.org). + - IWF 提供 ,这是一项 + 面向符合条件的小型企业和初创公司的哈希匹配服务,能够 + 只需极少的技术专长即可完成集成。 +- **新型 CSAM 检测分类器。** 这些工具可以检测未知或未出现过的 CSAM。 - 提供 - 用于识别图像和视频中潜在新颖 CSAM 的分类器,以及 - 相关的基于文本的剥削信号。 - - Google 的 使用 AI 来 - 对图像和视频进行分类并分配审查优先级。分类器分配的优先级越高, - 媒体包含 CSAM 的可能性就越大。 + 用于识别图像和视频中潜在的新型 CSAM 以及相关基于文本的剥削信号的分类器, + 以及相关基于文本的剥削信号。 + - Google 使用 AI 来 + 对图片和视频进行分类并分配其审核优先级。优先级越 + 高,该媒体越有可能包含 CSAM。 -- **恶意行为者检测与执法。** 利用可用的标识符和 - 信息(如用户名、电子邮件地址和设备 ID),考虑 - 永久封禁或以其他方式阻止人们用来 - 违反或试图违反 CSAM 政策的账户。留意那些试图规避执法的 - 惯犯。 +- **不良行为者检测与处置。** 利用可用的标识符和 + 信息(如用户名、电子邮箱地址和设备 ID),考虑 + 永久封禁或以其他方式中断那些已被用于 + 违反或企图违反 CSAM 相关策略的账户。注意识别那些 + 企图规避处置的累犯。 -## 回复与报告 +## 响应并报告 -请确保你的产品和团队能够在获知 -你的服务上存在 CSAM 时采取适当行动。 +确保当出现以下情况时,你的产品和团队能够采取适当的应对措施: +aware of CSAM on your service. -- **注册并准备向当局举报 CSAM。** 或你的。考虑如何使向 NCMEC 的举报 - 具有可操作性,以及如何支持儿童保护。请尽可能多地提供 - 信息,以帮助将举报转至适当的 - 司法管辖区并识别嫌疑人。NCMEC 的包括 IP 地址、设备 ID 和其他数据。 +- **注册并准备向有关部门报告 CSAM。** 或你的。考虑什么构成对 NCMEC 的可执行 + 报告,以及它如何支持儿童保护工作。请尽可能提供 + 详细信息,以帮助将报告路由到相应的司法管辖 + 区并识别嫌疑人。NCMEC 的包括 IP 地址、设备 ID 和其他数据。 当地法律和报告义务可能因司法管辖区而异。 -- **保留可用的记录和标识符。** 当你提交报告时,保持 - 事件文档以及任何可能有助于识别 - 违规行为者的相关数据,以便你能响应执法部门的请求。 -- **编写响应预案。** 明确谁负责审核报告、如何在内部和外部升级 - 紧急情况、对违规用户采取哪些行动, - 以及谁有权做出这些决定。这有助于你建立执法行动机制。 -- 考虑建立一个可信赖的专家举报人网络,包括 - IWF 等组织和其他热线,他们可以利用专业知识 - 为你标记 CSAM 案件。 -- **培训并支持相关人员。** 确保人类处于 - 监督环节中。确保审核人员、支持团队和值班人员理解你的 - 政策、升级路径以及任何自动化系统的局限性。 -- **使用所需工具来审核内容或应对滥用行为。** 其他 - 工具可以帮助你应对儿童安全风险和危害: - - The [Moderation API](https://developers.openai.com/api/docs/guides/moderation) 检测文本和图像中可能有害的 - 内容。了解关于 - [`omni-moderation-latest`](https://developers.openai.com/api/docs/models/omni-moderation-latest) 模型的更多信息。 - 这不能替代专门的 CSAM 检测。它仍包含一个 - `sexual/minors` 涉及 18 岁以下人群的性内容类别 - ;此类别仅限文本。使用结果以: - - 阻止或过滤内容。 - - 将内容发送至人工审核。 - - 对账户进行干预。 - - 对重复滥用行为增加阻力,并应用产品或服务特定的 - 执法措施。 - - 考虑其他可能有帮助的审核工具。例如,是一个用于 - 对文本、多媒体和配置文件中的潜在政策违规进行分流的开源审核控制台。它 - 支持人工和自动化审核,对审核者采取以健康为导向的方法, - 并支持端到端的审核工作流,包括 - NCMEC CyberTipline 报告。 - -当你准备好进一步操作时,可考虑其他响应与报告 +- **保留可用的记录和标识符。** 当你提交报告时,维护 + 事件及任何相关数据的文档记录,以便帮助你识别 + 违规行为人,从而能够响应执法部门的请求。 +- **编写响应预案。** 明确由谁审核报告、如何在内部和外部升级 + 紧急情况、对违规用户采取哪些措施, + 以及由谁做出这些决策。这有助于你建立执法运营机制。 +- 考虑建立由可信赖的专家报告人组成的网络,包括 + IWF 等组织以及其他举报热线,它们可以凭借专业知识为你 + 标记 CSAM 案件。 +- **培训并支持相关人员。** 让人类参与其中至关重要。确保审核人员、 + 支持团队和值班人员理解你的 + 策略、升级路径以及任何自动化系统的局限性。 +- **使用审核内容或应对滥用所需的工具。** 其他 + 工具也可以帮助你应对儿童安全风险和危害: + - 该 [Moderation API](https://developers.openai.com/api/docs/guides/moderation) detects potentially harmful + content in text and images. Learn more about the + [`omni-moderation-latest`](https://developers.openai.com/api/docs/models/omni-moderation-latest) model. + This isn't a substitute for dedicated CSAM detection. It still includes a + `sexual/minors` category covering sexual content involving people + under 18; this category is text-only. Use results to: + - Block or filter content. + - Send content for human review. + - Intervene on an account. + - Add friction to repeated misuse and apply product- or service-specific + enforcement. + - Consider other moderation tools that could help. For example, is an open-source review console for + triaging potential policy violations in text, multimedia, and profiles. It + supports human and automated review, takes a wellness-oriented approach for + reviewers, and enables end-to-end moderation workflows, including + NCMEC CyberTipline reporting. + +当你准备好做更多时,可考虑其他响应与报告 措施: -- **支持参与应对 CSAM 的人员。** 组织应投入 - 培训、支持以及面向 CSAM 审核员的福利计划。阅读 +- **为参与应对 CSAM 的人员提供支持。** 各组织应当投入资源 + 为 CSAM 审核员提供培训、支持和身心健康项目。阅读 . -- **获取专业支持。** 你不一定需要一个庞大的信任与安全团队才能 - 起步。Tech Coalition 为各公司提供了多种方式来构建更强大的儿童 - 安全体系: - - 是一项免费的能力建设计划,专为初创企业和 - 中小型平台设计,同时对所有规模的公司开放。 - 该计划提供实用资源、指导和支持,帮助公司 - 建立坚实的儿童安全基础。符合条件的公司还可以通过 Pathways - 申请 PhotoDNA 再许可。 - - 为希望获得更多实践帮助以加强其儿童安全计划并 - 应对特定风险的公司提供定制化咨询和实施支持。 - 使公司能够参与行业针对网络儿童性剥削和虐待的全球协作。 - - 应对行动,与同行交流, - 分享专业知识,并为集体行动贡献力量。联系, - 共享专业知识,并为集体行动做出贡献。联系 [Tech - Coalition 团队](mailto:md@technologycoalition.org) 用于初步 +- **获取专业支持。** 你不需要庞大的信任与安全团队就可以 + 起步。Tech Coalition 为各公司提供了建立更强大的儿童 + 安全体系的方法: + - 是一个免费的能力建设项目,专为初创公司以及 + 中小型平台量身打造,同时也向各类规模的公司开放。 + 它提供实用的资源、指导和支持,帮助公司 + 建立坚实的儿童安全基础。符合条件的公司还可以申请 + 通过 Pathways 获得 PhotoDNA 的分许可。 + - 为寻求更多实践帮助以加强其儿童安全项目并 + 应对特定风险的公司提供量身定制的咨询和实施支持。 + 应对特定风险。 + - 使各公司能够参与行业对在线儿童性剥削与性侵的全球协作 + 应对,与同行交流, + 分享专业知识,并为集体行动做出贡献。请联系 [Tech + Coalition 团队](mailto:md@technologycoalition.org) 用于初步的 咨询。 - - 开发者可以参考 Tech Coalition 的指南以获取进一步指导。 + - 开发者可参考 Tech Coalition 的相关指南以获取进一步指导。 -### 扩展安全防护 +### 规模防护 -正确的控制措施和安全保障取决于产品及其开发阶段 -和成熟度、其用户和功能、其运营地区,以及其 -可用资源。 +合适的控制措施与安全护栏取决于产品本身、所处开发阶段 +和成熟度,以及它的用户、功能、运营地区和可用 +资源。 -风险敞口较高的产品——例如,那些支持 -直播、图像生成或编辑、文件存储或私有 -连接的产品——应考虑实施和加强以下安全保障措施,例如: +对于风险较高的产品——例如支持直播、图像生成或 +编辑、文件存储或私有连接的产品——应考虑实施并强化 +以下安全护栏: -- 上线前以及高风险功能变更时进行产品风险评估。 +- 在产品上线前以及每当高风险功能发生变化时进行产品风险评估。 参见。 - 与服务相适应的分层检测,可能包括哈希匹配、 - 图像或视频分类器、文本信号、关键词检测和 URL 拦截。 -- 对高置信度或高严重性信号进行人工审核,使用能够 - 保护审核员身心健康并限制其不必要接触有害 + 图像或视频分类器、文本信号、关键词检测以及 URL 拦截。 +- 对高置信度或高严重性的信号进行人工审核,使用能够 + 保护审核人员身心健康并限制其不必要接触有害 内容的工具。 - 速率限制、账户控制和滥用监控,使重复滥用行为 - 更加困难。 -- 定期测试和度量,以便你发现漏洞、跟踪结果并 + 更难实施。 +- 定期测试和衡量,以便发现差距、跟踪效果并 改进你的控制措施。 -这些建议只是一个起点,而非法律建议或通用 +这些建议仅作为起点,并非法律意见或通用的 护理标准。请根据你的服务、风险状况和适用法律进行调整。 \ No newline at end of file diff --git a/docs/zh/api/docs/guides/custom-chatkit.md b/docs/zh/api/docs/guides/custom-chatkit.md index 0a1af2d..c12ad77 100644 --- a/docs/zh/api/docs/guides/custom-chatkit.md +++ b/docs/zh/api/docs/guides/custom-chatkit.md @@ -1,24 +1,24 @@ -# 与 ChatKit 的高级集成 +# ChatKit 高级集成 -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 后追加 `.md` 来获取。 +> 完整文档索引请参阅 [llms.txt](/llms.txt)。文档页面的 Markdown 版本可通过在页面 URL 末尾追加 `.md` 获取。 -当你需要完全控制——自定义身份验证、数据驻留、本地部署或定制的智能体编排——你可以在自己的基础设施上运行 ChatKit。使用OpenAI的高级自托管选项来使用你自己的服务器和定制的 ChatKit。 +当你需要完全控制——自定义身份验证、数据驻留、本地部署,或定制化的 智能体 编排——你可以在自己的基础设施上运行 ChatKit。使用 OpenAI 的高级自托管选项来使用你自己的服务器和定制化的 ChatKit。 智能体 Builder 托管的 ChatKit 工作流正处于过渡期。对于新的 - ChatKit 应用,请使用服务端智能体实现构建于你自己的,配合 - ChatKit SDK和Agents SDK。参见 [ChatKit 过渡指南 + ChatKit 应用,请基于你自己的 服务端 智能体 实现进行构建,使用 + ChatKit SDK 和 Agents SDK。请参阅 [ChatKit 过渡指南 →](https://developers.openai.com/api/docs/guides/chatkit) -## 在你自己的基础设施上运行 ChatKit +## 在自有基础设施上运行 ChatKit -从宏观层面来看,高级 ChatKit 集成是构建你自己的 ChatKit 服务器并添加小部件来构建聊天界面的过程。你将使用OpenAI API和你的 ChatKit 服务器来构建由OpenAI模型驱动的自定义聊天。 +从整体来看,高级 ChatKit 集成是构建你自己的 ChatKit 服务器并添加 widgets 以构建聊天界面的过程。你将使用 OpenAI API 和你的 ChatKit 服务器,基于 OpenAI 模型构建自定义聊天功能。 -![OpenAI托管的 ChatKit](https://cdn.openai.com/API/docs/images/self-hosted.png) +![OpenAI 托管的 ChatKit](https://cdn.openai.com/API/docs/images/self-hosted.png) ## 设置你的 ChatKit 服务器 -请参阅 [GitHub 上的服务端指南](https://github.com/openai/chatkit-python/blob/main/docs/server.md) 了解如何处理传入请求、运行工具,以及 -如何将结果流式返回给客户端。以下片段突出了主要组件。 +请参阅 [GitHub 上的服务端指南](https://github.com/openai/chatkit-python/blob/main/docs/server.md) 了解如何处理传入请求、运行工具,并 +将结果流式返回给客户端。下面的代码片段展示了主要组件。 ### 1. 安装服务端包 @@ -28,9 +28,9 @@ pip install openai-chatkit ### 2. 实现服务端类 -`ChatKitServer` 驱动对话。覆盖 `respond` 以在每当 -用户消息或客户端工具输出到达时流式传输事件。诸如 `stream_agent_response` 连接 -服务器与 Agents SDK 的助手。 +`ChatKitServer` 驱动对话流程。可通过以下参数进行覆盖 `respond` ,在每当有 +用户消息或客户端工具输出到达时,流转事件。类似 `stream_agent_response` connect +的方法可将服务端连接到Agents SDK。 ```python class MyChatKitServer(ChatKitServer[RequestContext]): @@ -63,7 +63,7 @@ class MyChatKitServer(ChatKitServer[RequestContext]): ``` -### 3. 暴露端点 +### 3. 公开该端点 使用你选择的框架将 HTTP 请求转发到服务器实例。例如,使用 Fast API: @@ -88,22 +88,22 @@ async def chatkit_endpoint(request: Request): ### 4. 建立数据存储契约 -实现 `chatkit.store.Store` 以使用你偏好的数据库持久化线程、消息和文件。 -对于本地开发,你可以使用内存 `Store` -实现。对于生产环境,请使用持久化存储,并考虑将模型存储为 -JSON 块,以便库更新无需迁移即可演进模式。 +实现 `chatkit.store.Store` 以使用你 +首选的数据库来持久化线程、消息和文件。对于本地开发,你可以使用内存 `Store` +实现。生产环境下,请使用持久化存储,并考虑将模型存储为 +JSON blob,以便库升级时可以在不进行迁移的情况下演进 schema。 ### 5. 提供文件存储合约 -提供 `FileStore` 实现(如果你支持上传)。ChatKit 支持直接 +提供一个 `FileStore` 实现,前提是你支持上传。ChatKit 可与直接 上传(客户端将文件 POST 到你的端点)或两阶段上传(客户端 -请求签名 URL,然后上传到云存储)。暴露预览以支持内联 -缩略图,并在线程被删除时处理删除操作。 +请求一个签名 URL,然后上传到云存储)配合使用。暴露预览以支持内联 +缩略图,并在会话被删除时处理删除操作。 -### 6. 从服务器端触发客户端工具 +### 6. 从服务端触发客户端工具 -客户端工具必须同时注册到客户端选项中以及你的智能体上。使用 -`ctx.context.client_tool_call` 从一个Agents SDK工具中排队调用。 +客户端工具必须同时在客户端选项和你的智能体上注册。使用 +`ctx.context.client_tool_call` 从 Agents SDK 工具中排队调用。 ```python @function_tool(description_override="Add an item to the user's todo list.") @@ -126,25 +126,25 @@ assistant_agent = Agent[AgentContext]( ### 7. 使用线程元数据和状态 -使用 `thread.metadata` 存储服务端状态,例如之前的Responses API运行 -ID 或自定义标签。元数据不会暴露给客户端,但会在每次 -`respond` 调用中可用。 +使用 `thread.metadata` 来存储服务端状态,例如上一次的Responses API 运行 +ID 或自定义标签。元数据不会暴露给客户端,但可在每次 +`respond` 调用中使用。 ### 8. 获取工具状态更新 -长时间运行的工具可以通过 `ProgressUpdateEvent`。向界面流式传输进度。ChatKit -会用下一条助手消息或小部件输出来替换进度事件。 +长时间运行的工具可以通过 `ProgressUpdateEvent`. ChatKit +将进度事件替换为下一条助手消息或 widget 输出。 ### 9. 使用服务端上下文 -将自定义上下文对象传递给 `server.process(body, context)` 以强制执行权限或 -通过你的存储和文件存储实现传播用户身份。 +传入自定义上下文对象以 `server.process(body, context)` 强制执行权限,或 +通过你的存储与文件存储实现传递用户身份。 ## 添加内联交互式小组件 -小组件让智能体能够在聊天界面中呈现丰富的 UI。可用于卡片、表单、 -文本块、列表及其他布局。辅助工具 `stream_widget` 可以立即渲染小组件 -或实时流式更新。 +Widgets 让 智能体 能够在聊天界面中呈现丰富的 UI。可用于卡片、表单、 +文本块、列表以及其他布局。 `stream_widget` 辅助函数 +可以立即渲染一个 widget,也可以随着数据到达进行流式更新。 ```python async def respond( @@ -172,39 +172,39 @@ async def respond( ``` -ChatKit 附带多种小组件节点(卡片、列表、表单、文本、按钮等), -详见 [GitHub 上的小组件指南](https://github.com/openai/chatkit-python/blob/main/docs/widgets.md) 了解所有组件、属性及 -流式处理指引。 +ChatKit 自带丰富的 widget 节点(卡片、列表、表单、文本、按钮等),详情 +请参阅 [GitHub 上的 widgets 指南](https://github.com/openai/chatkit-python/blob/main/docs/widgets.md) 以了解所有组件、props 以及 +流式传输指南。 -参见 [Widget Builder](https://widgets.chatkit.studio/) 以在交互式 UI 中探索和创建小组件。 +请参阅 [Widget Builder](https://widgets.chatkit.studio/) 在交互式 UI 中浏览并创建 widget。 ## 使用操作 -操作(Actions)让 ChatKit 界面无需发送用户消息即可触发工作。将 -`ActionConfig` 附加到任何支持它的部件节点——按钮、选择框和其他控件 -可以流式传输新的线程项或就地更新部件。当部件位于 -`Form`,内部时,ChatKit 会在操作负载中包含收集的表单值。 +Actions 让 ChatKit UI 能在不发送用户消息的情况下触发工作。将一个 +`ActionConfig` 附加到任何支持它的 widget 节点上——比如按钮、下拉选择以及其他控件 +都可以流式推送新的线程条目,或就地更新 widget。当一个 widget 位于一个 +`Form`,中时,ChatKit 会将收集到的表单值包含在 action 负载中。 -在服务器端,实现 `action` 方法于 `ChatKitServer` 以处理负载 -并可选地流式传输额外事件。你也可以在客户端处理操作,通过 -设置 `handler="client"` 并在转发后续 -工作到服务器之前用 JavaScript 响应。 +在服务端,实现 `action` 方法,作用于 `ChatKitServer` 以处理该负载 +,并可选择性地流式推送额外的事件。你也可以在客户端通过 +设置 `handler="client"` 来在 JavaScript 中响应,然后将后续的 +工作转发到服务端。 -参见 [GitHub 上的操作指南](https://github.com/openai/chatkit-python/blob/main/docs/actions.md) 了解链式操作、创建 -强类型负载以及协调客户端/服务器处理程序等模式。 +请参阅 [GitHub 上的 actions 指南](https://github.com/openai/chatkit-python/blob/main/docs/actions.md) ,了解诸如链式调用 action、创建 +强类型负载以及协调客户端/服务端处理器的模式。 -## 资源 +## Resources 使用以下资源和参考来完成你的集成。 ### 设计资源 - 下载 [OpenAI Sans Variable](https://drive.google.com/file/d/10-dMu1Oknxg3cNPHZOda9a1nEkSwSXE1/view?usp=sharing). -- 复制该文件并根据你的产品定制组件。 +- 复制该文件并为你的产品自定义组件。 -### 事件参考 +### Events 参考 -ChatKit 会发出 `CustomEvent` 来自 Web Component 的实例。监听生命周期事件,并从 `event.detail`: +ChatKit 从 Web Component 发出 `CustomEvent` 实例。监听生命周期事件,并从以下位置读取载荷数据 `event.detail`: ```javascript chatkit.addEventListener("chatkit.error", (event) => { @@ -231,17 +231,17 @@ chatkit.addEventListener("chatkit.log", (event) => { ### 选项参考 -| 选项 | 类型 | 描述 | 默认值 | +| 选项 | 类型 | 说明 | 默认值 | | --------------- | -------------------------- | ---------------------------------------------------------- | -------------- | -| `apiURL` | `string` | 实现 ChatKit 服务器协议的端点。 | _必填_ | -| `fetch` | `typeof fetch` | 覆盖 fetch 调用(用于自定义标头或认证)。 | `window.fetch` | -| `theme` | `"light" \| "dark"` | UI 主题。 | `"light"` | -| `initialThread` | `string \| null` | 挂载时打开的线程; `null` 显示新线程视图。 | `null` | -| `clientTools` | `Record` | 暴露给模型的客户端执行工具。 | | -| `header` | `object \| boolean` | 标头配置或 `false` 隐藏标头。 | `true` | -| `newThreadView` | `object` | 自定义问候文本和起始提示。 | | -| `messages` | `object` | 配置消息功能(反馈、注释等)。 | | -| `composer` | `object` | 控制附件、实体标签和占位符文本。 | | +| `apiURL` | `string` | 实现 ChatKit 服务端协议的端点。 | _必填_ | +| `fetch` | `typeof fetch` | 覆盖 fetch 调用(用于自定义请求头或身份验证)。 | `window.fetch` | +| `theme` | `"light" \| "dark"` | 界面主题。 | `"light"` | +| `initialThread` | `string \| null` | 挂载时打开的会话; `null` 显示新建会话视图。 | `null` | +| `clientTools` | `Record` | 暴露给模型的客户端侧执行工具。 | | +| `header` | `object \| boolean` | 头部配置或 `false` 用于隐藏头部。 | `true` | +| `newThreadView` | `object` | 自定义问候语和初始提示。 | | +| `messages` | `object` | 配置消息功能(反馈、批注等)。 | | +| `composer` | `object` | 控制附件、实体标签和占位文本。 | | | `entities` | `object` | 用于实体查找、点击处理和预览的回调。 | | ### 纯文本别名 diff --git a/docs/zh/api/docs/guides/developer-mode.md b/docs/zh/api/docs/guides/developer-mode.md index 368a61b..c4512be 100644 --- a/docs/zh/api/docs/guides/developer-mode.md +++ b/docs/zh/api/docs/guides/developer-mode.md @@ -1,6 +1,6 @@ -# ChatGPT 开发者模式 +# ChatGPT Developer mode -> 有关完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 后追加 `.md` 来获取文档页面的 Markdown 版本。 +> 如需查看完整的文档索引,请参阅 [llms.txt](/llms.txt)。可通过在页面 URL 末尾追加 `.md` 来获取文档页面的 Markdown 版本。 [