@prismer/runtime 2.0.7 → 2.2.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3631 -0
- package/README.md +34 -12
- package/apc/skills/FIELD-DICTIONARY.md +111 -0
- package/apc/skills/bug-reproduce/SKILL.md +150 -0
- package/apc/skills/bug-reproduce/skill.json +96 -0
- package/apc/skills/code-review/SKILL.md +198 -0
- package/apc/skills/code-review/skill.json +124 -0
- package/apc/skills/design-review/SKILL.md +122 -0
- package/apc/skills/design-review/skill.json +88 -0
- package/apc/skills/doc-sync/SKILL.md +168 -0
- package/apc/skills/doc-sync/skill.json +81 -0
- package/apc/skills/env-doctor/SKILL.md +194 -0
- package/apc/skills/env-doctor/skill.json +209 -0
- package/apc/skills/git-ops/SKILL.md +189 -0
- package/apc/skills/git-ops/skill.json +94 -0
- package/apc/skills/impact-trace/SKILL.md +168 -0
- package/apc/skills/impact-trace/skill.json +104 -0
- package/apc/skills/observability/SKILL.md +195 -0
- package/apc/skills/observability/skill.json +116 -0
- package/apc/skills/release-db-config-sync/SKILL.md +186 -0
- package/apc/skills/release-db-config-sync/skill.json +109 -0
- package/apc/skills/release-ota-promote/SKILL.md +195 -0
- package/apc/skills/release-ota-promote/skill.json +176 -0
- package/apc/skills/release-preflight/SKILL.md +174 -0
- package/apc/skills/release-preflight/skill.json +175 -0
- package/apc/skills/release-rollback/SKILL.md +214 -0
- package/apc/skills/release-rollback/skill.json +230 -0
- package/apc/skills/release-tag/SKILL.md +194 -0
- package/apc/skills/release-tag/skill.json +94 -0
- package/apc/skills/releasing-prod/SKILL.md +49 -0
- package/apc/skills/releasing-test/SKILL.md +135 -0
- package/apc/skills/sdk-release/SKILL.md +200 -0
- package/apc/skills/spec-intake/SKILL.md +169 -0
- package/apc/skills/spec-intake/skill.json +93 -0
- package/apc/skills/test-result-feedback/SKILL.md +239 -0
- package/apc/skills/test-result-feedback/skill.json +193 -0
- package/apc/skills/test-runner/SKILL.md +169 -0
- package/apc/skills/test-runner/skill.json +103 -0
- package/apc/skills/ui-align/SKILL.md +209 -0
- package/apc/skills/ui-align/skill.json +114 -0
- package/apc/skills/ui-canvas/SKILL.md +148 -0
- package/apc/skills/ui-canvas/skill.json +127 -0
- package/built-in-skills/agent-coordination/SKILL.md +257 -0
- package/built-in-skills/agent-meta/SKILL.md +53 -0
- package/built-in-skills/assets/SKILL.md +133 -0
- package/built-in-skills/browser-use/SKILL.md +93 -0
- package/built-in-skills/canvas-design/LICENSE.txt +202 -0
- package/built-in-skills/canvas-design/SKILL.md +157 -0
- package/built-in-skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/built-in-skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/built-in-skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +255 -0
- package/built-in-skills/claude-api/LICENSE.txt +202 -0
- package/built-in-skills/claude-api/SKILL.md +325 -0
- package/built-in-skills/claude-api/csharp/claude-api.md +402 -0
- package/built-in-skills/claude-api/curl/examples.md +216 -0
- package/built-in-skills/claude-api/curl/managed-agents.md +336 -0
- package/built-in-skills/claude-api/go/claude-api.md +421 -0
- package/built-in-skills/claude-api/go/managed-agents/README.md +561 -0
- package/built-in-skills/claude-api/java/claude-api.md +432 -0
- package/built-in-skills/claude-api/java/managed-agents/README.md +442 -0
- package/built-in-skills/claude-api/php/claude-api.md +375 -0
- package/built-in-skills/claude-api/php/managed-agents/README.md +435 -0
- package/built-in-skills/claude-api/python/claude-api/README.md +420 -0
- package/built-in-skills/claude-api/python/claude-api/batches.md +185 -0
- package/built-in-skills/claude-api/python/claude-api/files-api.md +165 -0
- package/built-in-skills/claude-api/python/claude-api/streaming.md +162 -0
- package/built-in-skills/claude-api/python/claude-api/tool-use.md +590 -0
- package/built-in-skills/claude-api/python/managed-agents/README.md +332 -0
- package/built-in-skills/claude-api/ruby/claude-api.md +113 -0
- package/built-in-skills/claude-api/ruby/managed-agents/README.md +389 -0
- package/built-in-skills/claude-api/shared/agent-design.md +101 -0
- package/built-in-skills/claude-api/shared/error-codes.md +213 -0
- package/built-in-skills/claude-api/shared/live-sources.md +135 -0
- package/built-in-skills/claude-api/shared/managed-agents-api-reference.md +378 -0
- package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
- package/built-in-skills/claude-api/shared/managed-agents-core.md +238 -0
- package/built-in-skills/claude-api/shared/managed-agents-environments.md +215 -0
- package/built-in-skills/claude-api/shared/managed-agents-events.md +195 -0
- package/built-in-skills/claude-api/shared/managed-agents-memory.md +197 -0
- package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +99 -0
- package/built-in-skills/claude-api/shared/managed-agents-onboarding.md +114 -0
- package/built-in-skills/claude-api/shared/managed-agents-outcomes.md +106 -0
- package/built-in-skills/claude-api/shared/managed-agents-overview.md +68 -0
- package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +173 -0
- package/built-in-skills/claude-api/shared/managed-agents-tools.md +321 -0
- package/built-in-skills/claude-api/shared/managed-agents-webhooks.md +110 -0
- package/built-in-skills/claude-api/shared/model-migration.md +779 -0
- package/built-in-skills/claude-api/shared/models.md +121 -0
- package/built-in-skills/claude-api/shared/prompt-caching.md +171 -0
- package/built-in-skills/claude-api/shared/tool-use-concepts.md +327 -0
- package/built-in-skills/claude-api/typescript/claude-api/README.md +333 -0
- package/built-in-skills/claude-api/typescript/claude-api/batches.md +106 -0
- package/built-in-skills/claude-api/typescript/claude-api/files-api.md +98 -0
- package/built-in-skills/claude-api/typescript/claude-api/streaming.md +178 -0
- package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +527 -0
- package/built-in-skills/claude-api/typescript/managed-agents/README.md +359 -0
- package/built-in-skills/codebase-design/DEEPENING.md +37 -0
- package/built-in-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/built-in-skills/codebase-design/LICENSE +21 -0
- package/built-in-skills/codebase-design/SKILL.md +116 -0
- package/built-in-skills/conversation-compaction/SKILL.md +114 -0
- package/built-in-skills/council-creator/SKILL.md +426 -0
- package/built-in-skills/diagnosing-bugs/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/SKILL.md +136 -0
- package/built-in-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +376 -0
- package/built-in-skills/document-generation/SKILL.md +105 -0
- package/built-in-skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/built-in-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/built-in-skills/domain-modeling/LICENSE +21 -0
- package/built-in-skills/domain-modeling/SKILL.md +76 -0
- package/built-in-skills/frontend-design/LICENSE.txt +177 -0
- package/built-in-skills/frontend-design/SKILL.md +43 -0
- package/built-in-skills/human-approval/SKILL.md +129 -0
- package/built-in-skills/image-generate/SKILL.md +128 -0
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +289 -0
- package/built-in-skills/ingest/SKILL.md +73 -0
- package/built-in-skills/internal-comms/LICENSE.txt +202 -0
- package/built-in-skills/internal-comms/SKILL.md +33 -0
- package/built-in-skills/internal-comms/examples/3p-updates.md +47 -0
- package/built-in-skills/internal-comms/examples/company-newsletter.md +65 -0
- package/built-in-skills/internal-comms/examples/faq-answers.md +30 -0
- package/built-in-skills/internal-comms/examples/general-comms.md +16 -0
- package/built-in-skills/liteparse/SKILL.md +176 -0
- package/built-in-skills/mcp-builder/LICENSE.txt +202 -0
- package/built-in-skills/mcp-builder/SKILL.md +237 -0
- package/built-in-skills/mcp-builder/reference/evaluation.md +602 -0
- package/built-in-skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/built-in-skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/built-in-skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/built-in-skills/mcp-builder/scripts/connections.py +151 -0
- package/built-in-skills/mcp-builder/scripts/evaluation.py +373 -0
- package/built-in-skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -0
- package/built-in-skills/memory/SKILL.md +471 -0
- package/built-in-skills/memory-dream/SKILL.md +339 -0
- package/built-in-skills/office-artifacts/SKILL.md +211 -0
- package/built-in-skills/okr/SKILL.md +154 -0
- package/built-in-skills/persona/SKILL.md +81 -0
- package/built-in-skills/persona-generator/SKILL.md +296 -0
- package/built-in-skills/pkf-svg/SKILL.md +253 -0
- package/built-in-skills/pkf-writing/SKILL.md +236 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +168 -0
- package/built-in-skills/proactivity/SKILL.md +84 -0
- package/built-in-skills/remotion/SKILL.md +431 -0
- package/built-in-skills/role-builder/SKILL.md +203 -0
- package/built-in-skills/role-builder/scripts/author-role.mjs +334 -0
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +223 -0
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +290 -0
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +267 -0
- package/built-in-skills/skill-authoring/SKILL.md +134 -0
- package/built-in-skills/skill-authoring/skill.json +74 -0
- package/built-in-skills/skill-builder/SKILL.md +171 -0
- package/built-in-skills/skill-builder/scripts/ingest.mjs +265 -0
- package/built-in-skills/skill-creator/LICENSE.txt +202 -0
- package/built-in-skills/skill-creator/SKILL.md +227 -0
- package/built-in-skills/skill-creator/agents/analyzer.md +274 -0
- package/built-in-skills/skill-creator/agents/comparator.md +202 -0
- package/built-in-skills/skill-creator/agents/grader.md +223 -0
- package/built-in-skills/skill-creator/assets/eval_review.html +146 -0
- package/built-in-skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/built-in-skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/built-in-skills/skill-creator/references/external-library-import.md +110 -0
- package/built-in-skills/skill-creator/references/schemas.md +430 -0
- package/built-in-skills/skill-creator/scripts/__init__.py +0 -0
- package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/built-in-skills/skill-creator/scripts/generate_report.py +326 -0
- package/built-in-skills/skill-creator/scripts/import-library.mjs +475 -0
- package/built-in-skills/skill-creator/scripts/improve_description.py +247 -0
- package/built-in-skills/skill-creator/scripts/package_skill.py +136 -0
- package/built-in-skills/skill-creator/scripts/quick_validate.py +103 -0
- package/built-in-skills/skill-creator/scripts/run_eval.py +310 -0
- package/built-in-skills/skill-creator/scripts/run_loop.py +328 -0
- package/built-in-skills/skill-creator/scripts/utils.py +47 -0
- package/built-in-skills/slack-gif-creator/LICENSE.txt +202 -0
- package/built-in-skills/slack-gif-creator/SKILL.md +291 -0
- package/built-in-skills/slack-gif-creator/core/easing.py +234 -0
- package/built-in-skills/slack-gif-creator/core/frame_composer.py +176 -0
- package/built-in-skills/slack-gif-creator/core/gif_builder.py +269 -0
- package/built-in-skills/slack-gif-creator/core/validators.py +136 -0
- package/built-in-skills/slack-gif-creator/requirements.txt +4 -0
- package/built-in-skills/tasks/SKILL.md +413 -0
- package/built-in-skills/tdd/LICENSE +21 -0
- package/built-in-skills/tdd/SKILL.md +110 -0
- package/built-in-skills/tdd/mocking.md +59 -0
- package/built-in-skills/tdd/refactoring.md +10 -0
- package/built-in-skills/tdd/tests.md +61 -0
- package/built-in-skills/team/SKILL.md +77 -0
- package/built-in-skills/web-artifacts-builder/LICENSE.txt +202 -0
- package/built-in-skills/web-artifacts-builder/SKILL.md +105 -0
- package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +334 -0
- package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/built-in-skills/webapp-testing/LICENSE.txt +202 -0
- package/built-in-skills/webapp-testing/SKILL.md +97 -0
- package/built-in-skills/webapp-testing/examples/console_logging.py +35 -0
- package/built-in-skills/webapp-testing/examples/element_discovery.py +40 -0
- package/built-in-skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/built-in-skills/webapp-testing/scripts/with_server.py +106 -0
- package/built-in-skills/wechat-pay/SKILL.md +59 -0
- package/dist/cli.cjs +72577 -16101
- package/dist/cli.js +72752 -16232
- package/dist/index.cjs +72632 -16024
- package/dist/index.d.cts +4956 -640
- package/dist/index.d.ts +4956 -640
- package/dist/index.js +72564 -15963
- package/package.json +39 -6
- package/plugins/memory/prismer/__init__.py +1211 -0
- package/plugins/memory/prismer/plugin.yaml +8 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +249 -0
- package/plugins/tools/prismer-recall/__init__.py +282 -0
- package/plugins/tools/prismer-recall/plugin.yaml +15 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# Files API — Python
|
|
2
|
+
|
|
3
|
+
The Files API uploads files for use in Messages API requests. Reference files via `file_id` in content blocks, avoiding re-uploads across multiple API calls.
|
|
4
|
+
|
|
5
|
+
**Beta:** Pass `betas=["files-api-2025-04-14"]` in your API calls (the SDK sets the required header automatically).
|
|
6
|
+
|
|
7
|
+
## Key Facts
|
|
8
|
+
|
|
9
|
+
- Maximum file size: 500 MB
|
|
10
|
+
- Total storage: 100 GB per organization
|
|
11
|
+
- Files persist until deleted
|
|
12
|
+
- File operations (upload, list, delete) are free; content used in messages is billed as input tokens
|
|
13
|
+
- Not available on Amazon Bedrock or Google Vertex AI
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Upload a File
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
import anthropic
|
|
21
|
+
|
|
22
|
+
client = anthropic.Anthropic()
|
|
23
|
+
|
|
24
|
+
uploaded = client.beta.files.upload(
|
|
25
|
+
file=("report.pdf", open("report.pdf", "rb"), "application/pdf"),
|
|
26
|
+
)
|
|
27
|
+
print(f"File ID: {uploaded.id}")
|
|
28
|
+
print(f"Size: {uploaded.size_bytes} bytes")
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Use a File in Messages
|
|
34
|
+
|
|
35
|
+
### PDF / Text Document
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
response = client.beta.messages.create(
|
|
39
|
+
model="claude-opus-4-7",
|
|
40
|
+
max_tokens=16000,
|
|
41
|
+
messages=[{
|
|
42
|
+
"role": "user",
|
|
43
|
+
"content": [
|
|
44
|
+
{"type": "text", "text": "Summarize the key findings in this report."},
|
|
45
|
+
{
|
|
46
|
+
"type": "document",
|
|
47
|
+
"source": {"type": "file", "file_id": uploaded.id},
|
|
48
|
+
"title": "Q4 Report", # optional
|
|
49
|
+
"citations": {"enabled": True} # optional, enables citations
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}],
|
|
53
|
+
betas=["files-api-2025-04-14"],
|
|
54
|
+
)
|
|
55
|
+
for block in response.content:
|
|
56
|
+
if block.type == "text":
|
|
57
|
+
print(block.text)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Image
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
image_file = client.beta.files.upload(
|
|
64
|
+
file=("photo.png", open("photo.png", "rb"), "image/png"),
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
response = client.beta.messages.create(
|
|
68
|
+
model="claude-opus-4-7",
|
|
69
|
+
max_tokens=16000,
|
|
70
|
+
messages=[{
|
|
71
|
+
"role": "user",
|
|
72
|
+
"content": [
|
|
73
|
+
{"type": "text", "text": "What's in this image?"},
|
|
74
|
+
{
|
|
75
|
+
"type": "image",
|
|
76
|
+
"source": {"type": "file", "file_id": image_file.id}
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}],
|
|
80
|
+
betas=["files-api-2025-04-14"],
|
|
81
|
+
)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Manage Files
|
|
87
|
+
|
|
88
|
+
### List Files
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
files = client.beta.files.list()
|
|
92
|
+
for f in files.data:
|
|
93
|
+
print(f"{f.id}: {f.filename} ({f.size_bytes} bytes)")
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Get File Metadata
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
file_info = client.beta.files.retrieve_metadata("file_011CNha8iCJcU1wXNR6q4V8w")
|
|
100
|
+
print(f"Filename: {file_info.filename}")
|
|
101
|
+
print(f"MIME type: {file_info.mime_type}")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Delete a File
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
client.beta.files.delete("file_011CNha8iCJcU1wXNR6q4V8w")
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Download a File
|
|
111
|
+
|
|
112
|
+
Only files created by the code execution tool or skills can be downloaded (not user-uploaded files).
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
file_content = client.beta.files.download("file_011CNha8iCJcU1wXNR6q4V8w")
|
|
116
|
+
file_content.write_to_file("output.txt")
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Full End-to-End Example
|
|
122
|
+
|
|
123
|
+
Upload a document once, ask multiple questions about it:
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
import anthropic
|
|
127
|
+
|
|
128
|
+
client = anthropic.Anthropic()
|
|
129
|
+
|
|
130
|
+
# 1. Upload once
|
|
131
|
+
uploaded = client.beta.files.upload(
|
|
132
|
+
file=("contract.pdf", open("contract.pdf", "rb"), "application/pdf"),
|
|
133
|
+
)
|
|
134
|
+
print(f"Uploaded: {uploaded.id}")
|
|
135
|
+
|
|
136
|
+
# 2. Ask multiple questions using the same file_id
|
|
137
|
+
questions = [
|
|
138
|
+
"What are the key terms and conditions?",
|
|
139
|
+
"What is the termination clause?",
|
|
140
|
+
"Summarize the payment schedule.",
|
|
141
|
+
]
|
|
142
|
+
|
|
143
|
+
for question in questions:
|
|
144
|
+
response = client.beta.messages.create(
|
|
145
|
+
model="claude-opus-4-7",
|
|
146
|
+
max_tokens=16000,
|
|
147
|
+
messages=[{
|
|
148
|
+
"role": "user",
|
|
149
|
+
"content": [
|
|
150
|
+
{"type": "text", "text": question},
|
|
151
|
+
{
|
|
152
|
+
"type": "document",
|
|
153
|
+
"source": {"type": "file", "file_id": uploaded.id}
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
}],
|
|
157
|
+
betas=["files-api-2025-04-14"],
|
|
158
|
+
)
|
|
159
|
+
print(f"\nQ: {question}")
|
|
160
|
+
text = next((b.text for b in response.content if b.type == "text"), "")
|
|
161
|
+
print(f"A: {text[:200]}")
|
|
162
|
+
|
|
163
|
+
# 3. Clean up when done
|
|
164
|
+
client.beta.files.delete(uploaded.id)
|
|
165
|
+
```
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Streaming — Python
|
|
2
|
+
|
|
3
|
+
## Quick Start
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
with client.messages.stream(
|
|
7
|
+
model="claude-opus-4-7",
|
|
8
|
+
max_tokens=64000,
|
|
9
|
+
messages=[{"role": "user", "content": "Write a story"}]
|
|
10
|
+
) as stream:
|
|
11
|
+
for text in stream.text_stream:
|
|
12
|
+
print(text, end="", flush=True)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Async
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
async with async_client.messages.stream(
|
|
19
|
+
model="claude-opus-4-7",
|
|
20
|
+
max_tokens=64000,
|
|
21
|
+
messages=[{"role": "user", "content": "Write a story"}]
|
|
22
|
+
) as stream:
|
|
23
|
+
async for text in stream.text_stream:
|
|
24
|
+
print(text, end="", flush=True)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Handling Different Content Types
|
|
30
|
+
|
|
31
|
+
Claude may return text, thinking blocks, or tool use. Handle each appropriately:
|
|
32
|
+
|
|
33
|
+
> **Opus 4.7 / Opus 4.6:** Use `thinking: {type: "adaptive"}`. On older models, use `thinking: {type: "enabled", budget_tokens: N}` instead.
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
with client.messages.stream(
|
|
37
|
+
model="claude-opus-4-7",
|
|
38
|
+
max_tokens=64000,
|
|
39
|
+
thinking={"type": "adaptive"},
|
|
40
|
+
messages=[{"role": "user", "content": "Analyze this problem"}]
|
|
41
|
+
) as stream:
|
|
42
|
+
for event in stream:
|
|
43
|
+
if event.type == "content_block_start":
|
|
44
|
+
if event.content_block.type == "thinking":
|
|
45
|
+
print("\n[Thinking...]")
|
|
46
|
+
elif event.content_block.type == "text":
|
|
47
|
+
print("\n[Response:]")
|
|
48
|
+
|
|
49
|
+
elif event.type == "content_block_delta":
|
|
50
|
+
if event.delta.type == "thinking_delta":
|
|
51
|
+
print(event.delta.thinking, end="", flush=True)
|
|
52
|
+
elif event.delta.type == "text_delta":
|
|
53
|
+
print(event.delta.text, end="", flush=True)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Streaming with Tool Use
|
|
59
|
+
|
|
60
|
+
The Python tool runner currently returns complete messages. Use streaming for individual API calls within a manual loop if you need per-token streaming with tools:
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
with client.messages.stream(
|
|
64
|
+
model="claude-opus-4-7",
|
|
65
|
+
max_tokens=64000,
|
|
66
|
+
tools=tools,
|
|
67
|
+
messages=messages
|
|
68
|
+
) as stream:
|
|
69
|
+
for text in stream.text_stream:
|
|
70
|
+
print(text, end="", flush=True)
|
|
71
|
+
|
|
72
|
+
response = stream.get_final_message()
|
|
73
|
+
# Continue with tool execution if response.stop_reason == "tool_use"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Getting the Final Message
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
with client.messages.stream(
|
|
82
|
+
model="claude-opus-4-7",
|
|
83
|
+
max_tokens=64000,
|
|
84
|
+
messages=[{"role": "user", "content": "Hello"}]
|
|
85
|
+
) as stream:
|
|
86
|
+
for text in stream.text_stream:
|
|
87
|
+
print(text, end="", flush=True)
|
|
88
|
+
|
|
89
|
+
# Get full message after streaming
|
|
90
|
+
final_message = stream.get_final_message()
|
|
91
|
+
print(f"\n\nTokens used: {final_message.usage.output_tokens}")
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Streaming with Progress Updates
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
def stream_with_progress(client, **kwargs):
|
|
100
|
+
"""Stream a response with progress updates."""
|
|
101
|
+
total_tokens = 0
|
|
102
|
+
content_parts = []
|
|
103
|
+
|
|
104
|
+
with client.messages.stream(**kwargs) as stream:
|
|
105
|
+
for event in stream:
|
|
106
|
+
if event.type == "content_block_delta":
|
|
107
|
+
if event.delta.type == "text_delta":
|
|
108
|
+
text = event.delta.text
|
|
109
|
+
content_parts.append(text)
|
|
110
|
+
print(text, end="", flush=True)
|
|
111
|
+
|
|
112
|
+
elif event.type == "message_delta":
|
|
113
|
+
if event.usage and event.usage.output_tokens is not None:
|
|
114
|
+
total_tokens = event.usage.output_tokens
|
|
115
|
+
|
|
116
|
+
final_message = stream.get_final_message()
|
|
117
|
+
|
|
118
|
+
print(f"\n\n[Tokens used: {total_tokens}]")
|
|
119
|
+
return "".join(content_parts)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Error Handling in Streams
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
try:
|
|
128
|
+
with client.messages.stream(
|
|
129
|
+
model="claude-opus-4-7",
|
|
130
|
+
max_tokens=64000,
|
|
131
|
+
messages=[{"role": "user", "content": "Write a story"}]
|
|
132
|
+
) as stream:
|
|
133
|
+
for text in stream.text_stream:
|
|
134
|
+
print(text, end="", flush=True)
|
|
135
|
+
except anthropic.APIConnectionError:
|
|
136
|
+
print("\nConnection lost. Please retry.")
|
|
137
|
+
except anthropic.RateLimitError:
|
|
138
|
+
print("\nRate limited. Please wait and retry.")
|
|
139
|
+
except anthropic.APIStatusError as e:
|
|
140
|
+
print(f"\nAPI error: {e.status_code}")
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Stream Event Types
|
|
146
|
+
|
|
147
|
+
| Event Type | Description | When it fires |
|
|
148
|
+
| --------------------- | --------------------------- | --------------------------------- |
|
|
149
|
+
| `message_start` | Contains message metadata | Once at the beginning |
|
|
150
|
+
| `content_block_start` | New content block beginning | When a text/tool_use block starts |
|
|
151
|
+
| `content_block_delta` | Incremental content update | For each token/chunk |
|
|
152
|
+
| `content_block_stop` | Content block complete | When a block finishes |
|
|
153
|
+
| `message_delta` | Message-level updates | Contains `stop_reason`, usage |
|
|
154
|
+
| `message_stop` | Message complete | Once at the end |
|
|
155
|
+
|
|
156
|
+
## Best Practices
|
|
157
|
+
|
|
158
|
+
1. **Always flush output** — Use `flush=True` to show tokens immediately
|
|
159
|
+
2. **Handle partial responses** — If the stream is interrupted, you may have incomplete content
|
|
160
|
+
3. **Track token usage** — The `message_delta` event contains usage information
|
|
161
|
+
4. **Use timeouts** — Set appropriate timeouts for your application
|
|
162
|
+
5. **Default to streaming** — Use `.get_final_message()` to get the complete response even when streaming, giving you timeout protection without needing to handle individual events
|