hive-skills 0.1.0
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/LICENSE +28 -0
- package/README.md +235 -0
- package/assets/LICENSE +32 -0
- package/assets/THIRD_PARTY_NOTICES.md +72 -0
- package/assets/manifest.json +1290 -0
- package/assets/skills/authored/code-review/composable/BUNDLE.md +192 -0
- package/assets/skills/authored/code-review/composable/INDEX.md +13 -0
- package/assets/skills/authored/code-review/composable/VERSION +1 -0
- package/assets/skills/authored/code-review/composable/mini/01-review-method.md +34 -0
- package/assets/skills/authored/code-review/composable/mini/02-security-review.md +20 -0
- package/assets/skills/authored/code-review/composable/mini/03-correctness-bugs.md +19 -0
- package/assets/skills/authored/code-review/composable/mini/04-concurrency.md +16 -0
- package/assets/skills/authored/code-review/composable/mini/05-error-handling.md +12 -0
- package/assets/skills/authored/code-review/composable/mini/06-performance.md +11 -0
- package/assets/skills/authored/code-review/composable/mini/07-api-design.md +20 -0
- package/assets/skills/authored/code-review/composable/mini/08-missing-tests.md +25 -0
- package/assets/skills/authored/code-review/composable/mini/09-refactoring-and-communication.md +32 -0
- package/assets/skills/authored/data-analysis/composable/BUNDLE.md +186 -0
- package/assets/skills/authored/data-analysis/composable/INDEX.md +13 -0
- package/assets/skills/authored/data-analysis/composable/VERSION +1 -0
- package/assets/skills/authored/data-analysis/composable/mini/01-data-quality-profiling.md +26 -0
- package/assets/skills/authored/data-analysis/composable/mini/02-aggregation-pitfalls.md +21 -0
- package/assets/skills/authored/data-analysis/composable/mini/03-time-series.md +19 -0
- package/assets/skills/authored/data-analysis/composable/mini/04-segmentation.md +23 -0
- package/assets/skills/authored/data-analysis/composable/mini/05-discount-pricing.md +17 -0
- package/assets/skills/authored/data-analysis/composable/mini/06-insight-generation.md +25 -0
- package/assets/skills/authored/data-analysis/composable/mini/07-executive-writing.md +26 -0
- package/assets/skills/authored/data-analysis/composable/mini/08-recommendations.md +20 -0
- package/assets/skills/authored/data-analysis/composable/mini/09-reproducibility-assumptions.md +20 -0
- package/assets/skills/authored/financial-analysis/composable/BUNDLE.md +1293 -0
- package/assets/skills/authored/financial-analysis/composable/INDEX.md +17 -0
- package/assets/skills/authored/financial-analysis/composable/VERSION +1 -0
- package/assets/skills/authored/financial-analysis/composable/mini/00-core.md +69 -0
- package/assets/skills/authored/financial-analysis/composable/mini/01-profitability-efficiency-ratios.md +173 -0
- package/assets/skills/authored/financial-analysis/composable/mini/02-liquidity-leverage-ratios.md +120 -0
- package/assets/skills/authored/financial-analysis/composable/mini/03-valuation-ratios-interpretation.md +107 -0
- package/assets/skills/authored/financial-analysis/composable/mini/04-dcf-projection-wacc.md +122 -0
- package/assets/skills/authored/financial-analysis/composable/mini/05-dcf-terminal-value-sensitivity.md +75 -0
- package/assets/skills/authored/financial-analysis/composable/mini/06-comparables-precedents.md +78 -0
- package/assets/skills/authored/financial-analysis/composable/mini/07-budget-variance-analysis.md +47 -0
- package/assets/skills/authored/financial-analysis/composable/mini/08-driver-based-forecasting-scenarios.md +111 -0
- package/assets/skills/authored/financial-analysis/composable/mini/09-rolling-forecasts-accuracy.md +114 -0
- package/assets/skills/authored/financial-analysis/composable/mini/10-reporting-exec-summary.md +58 -0
- package/assets/skills/authored/financial-analysis/composable/mini/11-industry-adaptations.md +130 -0
- package/assets/skills/authored/financial-analysis/composable/mini/12-toolkit-scripts-io.md +102 -0
- package/assets/skills/authored/python-api/composable/BUNDLE.md +389 -0
- package/assets/skills/authored/python-api/composable/INDEX.md +13 -0
- package/assets/skills/authored/python-api/composable/VERSION +1 -0
- package/assets/skills/authored/python-api/composable/mini/01-project-structure.md +44 -0
- package/assets/skills/authored/python-api/composable/mini/02-routing-and-app.md +38 -0
- package/assets/skills/authored/python-api/composable/mini/03-pydantic-models.md +45 -0
- package/assets/skills/authored/python-api/composable/mini/04-validation-and-errors.md +59 -0
- package/assets/skills/authored/python-api/composable/mini/05-dependencies-and-auth.md +60 -0
- package/assets/skills/authored/python-api/composable/mini/06-pagination-filtering.md +44 -0
- package/assets/skills/authored/python-api/composable/mini/07-async-performance.md +30 -0
- package/assets/skills/authored/python-api/composable/mini/08-testing.md +45 -0
- package/assets/skills/authored/python-api/composable/mini/09-middleware-observability.md +29 -0
- package/assets/skills/authored/tech-writing/composable/BUNDLE.md +220 -0
- package/assets/skills/authored/tech-writing/composable/INDEX.md +12 -0
- package/assets/skills/authored/tech-writing/composable/VERSION +1 -0
- package/assets/skills/authored/tech-writing/composable/mini/01-audience-analysis.md +26 -0
- package/assets/skills/authored/tech-writing/composable/mini/02-document-types.md +27 -0
- package/assets/skills/authored/tech-writing/composable/mini/03-readme-quickstart-changelog.md +22 -0
- package/assets/skills/authored/tech-writing/composable/mini/04-information-architecture.md +21 -0
- package/assets/skills/authored/tech-writing/composable/mini/05-style-clarity.md +29 -0
- package/assets/skills/authored/tech-writing/composable/mini/06-breaking-changes-migrations.md +33 -0
- package/assets/skills/authored/tech-writing/composable/mini/07-troubleshooting-security.md +30 -0
- package/assets/skills/authored/tech-writing/composable/mini/08-faq-voice-tone.md +32 -0
- package/assets/skills/converted/claude-api/composable/BUNDLE.md +14996 -0
- package/assets/skills/converted/claude-api/composable/INDEX.md +98 -0
- package/assets/skills/converted/claude-api/composable/VERSION +1 -0
- package/assets/skills/converted/claude-api/composable/mini/00-core.md +235 -0
- package/assets/skills/converted/claude-api/composable/mini/01-model-api-quick-reference.md +258 -0
- package/assets/skills/converted/claude-api/composable/mini/02-common-pitfalls.md +42 -0
- package/assets/skills/converted/claude-api/composable/mini/10-models.md +135 -0
- package/assets/skills/converted/claude-api/composable/mini/11-platform-availability.md +96 -0
- package/assets/skills/converted/claude-api/composable/mini/12-claude-platform-on-aws.md +59 -0
- package/assets/skills/converted/claude-api/composable/mini/13-live-sources.md +143 -0
- package/assets/skills/converted/claude-api/composable/mini/14-error-codes.md +256 -0
- package/assets/skills/converted/claude-api/composable/mini/15-prompt-caching.md +223 -0
- package/assets/skills/converted/claude-api/composable/mini/16-token-counting.md +56 -0
- package/assets/skills/converted/claude-api/composable/mini/17-tool-use-concepts.md +444 -0
- package/assets/skills/converted/claude-api/composable/mini/18-agent-design.md +101 -0
- package/assets/skills/converted/claude-api/composable/mini/19-anthropic-cli.md +246 -0
- package/assets/skills/converted/claude-api/composable/mini/20-model-migration.md +1301 -0
- package/assets/skills/converted/claude-api/composable/mini/30-managed-agents-overview.md +71 -0
- package/assets/skills/converted/claude-api/composable/mini/31-managed-agents-core.md +278 -0
- package/assets/skills/converted/claude-api/composable/mini/32-managed-agents-environments.md +219 -0
- package/assets/skills/converted/claude-api/composable/mini/33-managed-agents-tools.md +366 -0
- package/assets/skills/converted/claude-api/composable/mini/34-managed-agents-events.md +252 -0
- package/assets/skills/converted/claude-api/composable/mini/35-managed-agents-outcomes.md +106 -0
- package/assets/skills/converted/claude-api/composable/mini/36-managed-agents-multiagent.md +101 -0
- package/assets/skills/converted/claude-api/composable/mini/37-managed-agents-webhooks.md +123 -0
- package/assets/skills/converted/claude-api/composable/mini/38-managed-agents-memory.md +197 -0
- package/assets/skills/converted/claude-api/composable/mini/39-managed-agents-scheduled-deployments.md +146 -0
- package/assets/skills/converted/claude-api/composable/mini/40-managed-agents-client-patterns.md +211 -0
- package/assets/skills/converted/claude-api/composable/mini/41-managed-agents-onboarding.md +82 -0
- package/assets/skills/converted/claude-api/composable/mini/42-managed-agents-api-reference.md +441 -0
- package/assets/skills/converted/claude-api/composable/mini/43-managed-agents-self-hosted-sandboxes.md +174 -0
- package/assets/skills/converted/claude-api/composable/mini/50-python-readme.md +564 -0
- package/assets/skills/converted/claude-api/composable/mini/51-python-tool-use.md +590 -0
- package/assets/skills/converted/claude-api/composable/mini/52-python-streaming-batches-files.md +549 -0
- package/assets/skills/converted/claude-api/composable/mini/53-python-managed-agents.md +335 -0
- package/assets/skills/converted/claude-api/composable/mini/55-typescript-readme.md +404 -0
- package/assets/skills/converted/claude-api/composable/mini/56-typescript-tool-use.md +548 -0
- package/assets/skills/converted/claude-api/composable/mini/57-typescript-streaming-batches-files.md +384 -0
- package/assets/skills/converted/claude-api/composable/mini/58-typescript-managed-agents.md +358 -0
- package/assets/skills/converted/claude-api/composable/mini/60-csharp-readme.md +361 -0
- package/assets/skills/converted/claude-api/composable/mini/61-csharp-tool-use.md +163 -0
- package/assets/skills/converted/claude-api/composable/mini/62-csharp-streaming-batches-files.md +64 -0
- package/assets/skills/converted/claude-api/composable/mini/65-go-readme.md +185 -0
- package/assets/skills/converted/claude-api/composable/mini/66-go-tool-use.md +219 -0
- package/assets/skills/converted/claude-api/composable/mini/67-go-streaming-files.md +63 -0
- package/assets/skills/converted/claude-api/composable/mini/68-go-managed-agents.md +564 -0
- package/assets/skills/converted/claude-api/composable/mini/70-java-readme.md +237 -0
- package/assets/skills/converted/claude-api/composable/mini/71-java-tool-use.md +227 -0
- package/assets/skills/converted/claude-api/composable/mini/72-java-streaming-files.md +49 -0
- package/assets/skills/converted/claude-api/composable/mini/73-java-managed-agents.md +443 -0
- package/assets/skills/converted/claude-api/composable/mini/75-php-readme.md +173 -0
- package/assets/skills/converted/claude-api/composable/mini/76-php-tool-use.md +252 -0
- package/assets/skills/converted/claude-api/composable/mini/77-php-streaming-batches-files.md +53 -0
- package/assets/skills/converted/claude-api/composable/mini/78-php-managed-agents.md +443 -0
- package/assets/skills/converted/claude-api/composable/mini/80-ruby-readme.md +133 -0
- package/assets/skills/converted/claude-api/composable/mini/81-ruby-tool-use-streaming.md +56 -0
- package/assets/skills/converted/claude-api/composable/mini/82-ruby-managed-agents.md +394 -0
- package/assets/skills/converted/claude-api/composable/mini/85-curl-examples.md +255 -0
- package/assets/skills/converted/claude-api/composable/mini/86-curl-managed-agents.md +340 -0
- package/assets/skills/converted/claude-api/composable/presets/csharp.md +1151 -0
- package/assets/skills/converted/claude-api/composable/presets/curl.md +1154 -0
- package/assets/skills/converted/claude-api/composable/presets/go.md +1598 -0
- package/assets/skills/converted/claude-api/composable/presets/java.md +1523 -0
- package/assets/skills/converted/claude-api/composable/presets/php.md +1488 -0
- package/assets/skills/converted/claude-api/composable/presets/python.md +2605 -0
- package/assets/skills/converted/claude-api/composable/presets/ruby.md +1146 -0
- package/assets/skills/converted/claude-api/composable/presets/shared.md +6478 -0
- package/assets/skills/converted/claude-api/composable/presets/typescript.md +2261 -0
- package/assets/skills/converted/docx/composable/BUNDLE.md +617 -0
- package/assets/skills/converted/docx/composable/INDEX.md +12 -0
- package/assets/skills/converted/docx/composable/VERSION +1 -0
- package/assets/skills/converted/docx/composable/mini/00-core.md +26 -0
- package/assets/skills/converted/docx/composable/mini/01-reading-converting.md +36 -0
- package/assets/skills/converted/docx/composable/mini/02-creating-setup-layout.md +85 -0
- package/assets/skills/converted/docx/composable/mini/03-creating-elements.md +257 -0
- package/assets/skills/converted/docx/composable/mini/04-editing-existing.md +57 -0
- package/assets/skills/converted/docx/composable/mini/05-xml-reference.md +128 -0
- package/assets/skills/converted/internal-comms/composable/BUNDLE.md +220 -0
- package/assets/skills/converted/internal-comms/composable/INDEX.md +11 -0
- package/assets/skills/converted/internal-comms/composable/VERSION +1 -0
- package/assets/skills/converted/internal-comms/composable/mini/00-core.md +30 -0
- package/assets/skills/converted/internal-comms/composable/mini/01-3p-updates.md +49 -0
- package/assets/skills/converted/internal-comms/composable/mini/02-company-newsletter.md +67 -0
- package/assets/skills/converted/internal-comms/composable/mini/03-faq-answers.md +32 -0
- package/assets/skills/converted/internal-comms/composable/mini/04-general-comms.md +18 -0
- package/assets/skills/converted/mcp-builder/composable/BUNDLE.md +2460 -0
- package/assets/skills/converted/mcp-builder/composable/INDEX.md +23 -0
- package/assets/skills/converted/mcp-builder/composable/VERSION +1 -0
- package/assets/skills/converted/mcp-builder/composable/mini/00-core.md +43 -0
- package/assets/skills/converted/mcp-builder/composable/mini/01-workflow-research-planning.md +54 -0
- package/assets/skills/converted/mcp-builder/composable/mini/02-implementation-process.md +78 -0
- package/assets/skills/converted/mcp-builder/composable/mini/03-naming-conventions.md +33 -0
- package/assets/skills/converted/mcp-builder/composable/mini/04-response-formats.md +21 -0
- package/assets/skills/converted/mcp-builder/composable/mini/05-pagination.md +24 -0
- package/assets/skills/converted/mcp-builder/composable/mini/06-transport.md +47 -0
- package/assets/skills/converted/mcp-builder/composable/mini/07-annotations.md +20 -0
- package/assets/skills/converted/mcp-builder/composable/mini/08-security.md +35 -0
- package/assets/skills/converted/mcp-builder/composable/mini/09-error-handling.md +32 -0
- package/assets/skills/converted/mcp-builder/composable/mini/10-testing-and-documentation.md +21 -0
- package/assets/skills/converted/mcp-builder/composable/mini/11-python-implementation.md +432 -0
- package/assets/skills/converted/mcp-builder/composable/mini/12-python-advanced-and-checklist.md +233 -0
- package/assets/skills/converted/mcp-builder/composable/mini/13-node-implementation.md +717 -0
- package/assets/skills/converted/mcp-builder/composable/mini/14-node-advanced-and-checklist.md +200 -0
- package/assets/skills/converted/mcp-builder/composable/mini/15-evaluation-design.md +200 -0
- package/assets/skills/converted/mcp-builder/composable/mini/16-evaluation-running.md +198 -0
- package/assets/skills/converted/mcp-builder/composable/presets/node-server.md +1381 -0
- package/assets/skills/converted/mcp-builder/composable/presets/python-server.md +1129 -0
- package/assets/skills/converted/pdf/composable/BUNDLE.md +1284 -0
- package/assets/skills/converted/pdf/composable/INDEX.md +14 -0
- package/assets/skills/converted/pdf/composable/VERSION +1 -0
- package/assets/skills/converted/pdf/composable/mini/00-core.md +46 -0
- package/assets/skills/converted/pdf/composable/mini/01-creation.md +176 -0
- package/assets/skills/converted/pdf/composable/mini/02-extraction.md +178 -0
- package/assets/skills/converted/pdf/composable/mini/03-merge-split-manipulate.md +240 -0
- package/assets/skills/converted/pdf/composable/mini/04-images-ocr.md +168 -0
- package/assets/skills/converted/pdf/composable/mini/05-encryption.md +51 -0
- package/assets/skills/converted/pdf/composable/mini/06-forms.md +300 -0
- package/assets/skills/converted/pdf/composable/mini/07-libraries-reference.md +89 -0
- package/assets/skills/converted/pptx/composable/BUNDLE.md +911 -0
- package/assets/skills/converted/pptx/composable/INDEX.md +12 -0
- package/assets/skills/converted/pptx/composable/VERSION +1 -0
- package/assets/skills/converted/pptx/composable/mini/00-core.md +37 -0
- package/assets/skills/converted/pptx/composable/mini/01-reading.md +37 -0
- package/assets/skills/converted/pptx/composable/mini/02-creating-from-scratch.md +422 -0
- package/assets/skills/converted/pptx/composable/mini/03-editing-templates.md +207 -0
- package/assets/skills/converted/pptx/composable/mini/04-design.md +89 -0
- package/assets/skills/converted/pptx/composable/mini/05-qa-and-rendering.md +91 -0
- package/assets/skills/converted/pptx/composable/presets/creating.md +659 -0
- package/assets/skills/converted/pptx/composable/presets/editing.md +485 -0
- package/assets/skills/converted/skill-creator/composable/BUNDLE.md +1681 -0
- package/assets/skills/converted/skill-creator/composable/INDEX.md +21 -0
- package/assets/skills/converted/skill-creator/composable/VERSION +1 -0
- package/assets/skills/converted/skill-creator/composable/mini/00-core.md +59 -0
- package/assets/skills/converted/skill-creator/composable/mini/01-creating-a-skill.md +27 -0
- package/assets/skills/converted/skill-creator/composable/mini/02-skill-writing-guide.md +71 -0
- package/assets/skills/converted/skill-creator/composable/mini/03-test-cases.md +21 -0
- package/assets/skills/converted/skill-creator/composable/mini/04-running-and-evaluating.md +128 -0
- package/assets/skills/converted/skill-creator/composable/mini/05-improving-the-skill.md +30 -0
- package/assets/skills/converted/skill-creator/composable/mini/06-blind-comparison.md +5 -0
- package/assets/skills/converted/skill-creator/composable/mini/07-description-optimization.md +74 -0
- package/assets/skills/converted/skill-creator/composable/mini/08-packaging.md +11 -0
- package/assets/skills/converted/skill-creator/composable/mini/09-environment-specific.md +38 -0
- package/assets/skills/converted/skill-creator/composable/mini/10-scripts-and-references.md +34 -0
- package/assets/skills/converted/skill-creator/composable/mini/11-json-schemas.md +414 -0
- package/assets/skills/converted/skill-creator/composable/mini/12-agent-grader.md +225 -0
- package/assets/skills/converted/skill-creator/composable/mini/13-agent-comparator.md +204 -0
- package/assets/skills/converted/skill-creator/composable/mini/14-agent-analyzer.md +276 -0
- package/assets/skills/converted/skill-creator/composable/presets/authoring.md +198 -0
- package/assets/skills/converted/skill-creator/composable/presets/evaluating.md +1334 -0
- package/assets/skills/converted/skill-creator/composable/presets/optimizing.md +160 -0
- package/assets/skills/converted/skill-creator/composable/presets.json +5 -0
- package/assets/skills/meta/ccs-skill-creator/composable/BUNDLE.md +465 -0
- package/assets/skills/meta/ccs-skill-creator/composable/INDEX.md +8 -0
- package/assets/skills/meta/ccs-skill-creator/composable/VERSION +1 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/00-core.md +46 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/01-create-new-skill.md +167 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/02-convert-existing-skill.md +120 -0
- package/assets/skills/meta/ccs-skill-creator/composable/mini/03-review-and-maintain.md +112 -0
- package/assets/skills/sources/anthropic/PROVENANCE.md +3 -0
- package/assets/skills/sources/anthropic/claude-api/LICENSE.txt +202 -0
- package/assets/skills/sources/anthropic/docx/LICENSE.txt +30 -0
- package/assets/skills/sources/anthropic/internal-comms/LICENSE.txt +202 -0
- package/assets/skills/sources/anthropic/mcp-builder/LICENSE.txt +202 -0
- package/assets/skills/sources/anthropic/pdf/LICENSE.txt +30 -0
- package/assets/skills/sources/anthropic/pptx/LICENSE.txt +30 -0
- package/assets/skills/sources/anthropic/skill-creator/LICENSE.txt +202 -0
- package/assets/skills/sources/financial-analyst/PROVENANCE.md +1 -0
- package/assets/tools/hive.py +728 -0
- package/dist/cli.js +7494 -0
- package/package.json +40 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Claude API — Go
|
|
2
|
+
|
|
3
|
+
> **Note:** The Go SDK supports the Claude API and beta tool use with `BetaToolRunner`. Agent SDK is not yet available for Go.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
go get github.com/anthropics/anthropic-sdk-go
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Client Initialization
|
|
12
|
+
|
|
13
|
+
```go
|
|
14
|
+
import (
|
|
15
|
+
"github.com/anthropics/anthropic-sdk-go"
|
|
16
|
+
"github.com/anthropics/anthropic-sdk-go/option"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
// Default (uses ANTHROPIC_API_KEY env var)
|
|
20
|
+
client := anthropic.NewClient()
|
|
21
|
+
|
|
22
|
+
// Explicit API key
|
|
23
|
+
client := anthropic.NewClient(
|
|
24
|
+
option.WithAPIKey("your-api-key"),
|
|
25
|
+
)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Model Constants
|
|
31
|
+
|
|
32
|
+
The Go SDK provides typed model constants: `anthropic.ModelClaudeFable5`, `anthropic.ModelClaudeOpus4_8`, `anthropic.ModelClaudeOpus4_7`, `anthropic.ModelClaudeSonnet4_6`, `anthropic.ModelClaudeHaiku4_5_20251001`. Use `ModelClaudeOpus4_8` unless the user specifies otherwise; if they ask for Fable or the most powerful model, use `anthropic.ModelClaudeFable5` (see `shared/models.md` for the full resolution table).
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Basic Message Request
|
|
37
|
+
|
|
38
|
+
```go
|
|
39
|
+
response, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
|
|
40
|
+
Model: anthropic.ModelClaudeOpus4_8,
|
|
41
|
+
MaxTokens: 16000,
|
|
42
|
+
Messages: []anthropic.MessageParam{
|
|
43
|
+
anthropic.NewUserMessage(anthropic.NewTextBlock("What is the capital of France?")),
|
|
44
|
+
},
|
|
45
|
+
})
|
|
46
|
+
if err != nil {
|
|
47
|
+
log.Fatal(err)
|
|
48
|
+
}
|
|
49
|
+
for _, block := range response.Content {
|
|
50
|
+
switch variant := block.AsAny().(type) {
|
|
51
|
+
case anthropic.TextBlock:
|
|
52
|
+
fmt.Println(variant.Text)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Thinking
|
|
60
|
+
|
|
61
|
+
Enable Claude's internal reasoning by setting `Thinking` in `MessageNewParams`. The response will contain `ThinkingBlock` content before the final `TextBlock`.
|
|
62
|
+
|
|
63
|
+
**Adaptive thinking is the recommended mode for Claude 4.6+ models.** Claude decides dynamically when and how much to think. Combine with the `effort` parameter for cost-quality control.
|
|
64
|
+
|
|
65
|
+
Derived from `anthropic-sdk-go/message.go` (`ThinkingConfigParamUnion`, `ThinkingConfigAdaptiveParam`).
|
|
66
|
+
|
|
67
|
+
```go
|
|
68
|
+
// There is no ThinkingConfigParamOfAdaptive helper — construct the union
|
|
69
|
+
// struct-literal directly and take the address of the variant.
|
|
70
|
+
adaptive := anthropic.ThinkingConfigAdaptiveParam{}
|
|
71
|
+
params := anthropic.MessageNewParams{
|
|
72
|
+
Model: anthropic.ModelClaudeSonnet4_6,
|
|
73
|
+
MaxTokens: 16000,
|
|
74
|
+
Thinking: anthropic.ThinkingConfigParamUnion{OfAdaptive: &adaptive},
|
|
75
|
+
Messages: []anthropic.MessageParam{
|
|
76
|
+
anthropic.NewUserMessage(anthropic.NewTextBlock("How many r's in strawberry?")),
|
|
77
|
+
},
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
resp, err := client.Messages.New(context.Background(), params)
|
|
81
|
+
if err != nil {
|
|
82
|
+
log.Fatal(err)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ThinkingBlock(s) precede TextBlock in content
|
|
86
|
+
for _, block := range resp.Content {
|
|
87
|
+
switch b := block.AsAny().(type) {
|
|
88
|
+
case anthropic.ThinkingBlock:
|
|
89
|
+
fmt.Println("[thinking]", b.Thinking)
|
|
90
|
+
case anthropic.TextBlock:
|
|
91
|
+
fmt.Println(b.Text)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
> **Fable 5, Opus 4.8, Opus 4.7, Opus 4.6, and Sonnet 4.6:** Use adaptive thinking (above). `ThinkingConfigParamOfEnabled(budgetTokens)` is removed on Fable 5, Opus 4.8, and 4.7 (400 if sent); deprecated on Opus 4.6 and Sonnet 4.6.
|
|
97
|
+
> **Older models:** Use `anthropic.ThinkingConfigParamOfEnabled(N)` (budget must be < `MaxTokens`, min 1024).
|
|
98
|
+
|
|
99
|
+
To disable: `anthropic.ThinkingConfigParamUnion{OfDisabled: &anthropic.ThinkingConfigDisabledParam{}}`.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Prompt Caching
|
|
104
|
+
|
|
105
|
+
`System` is `[]TextBlockParam`; set `CacheControl` on the last block to cache tools + system together. For placement patterns and the silent-invalidator audit checklist, see `shared/prompt-caching.md`.
|
|
106
|
+
|
|
107
|
+
```go
|
|
108
|
+
System: []anthropic.TextBlockParam{{
|
|
109
|
+
Text: longSystemPrompt,
|
|
110
|
+
CacheControl: anthropic.NewCacheControlEphemeralParam(), // default 5m TTL
|
|
111
|
+
}},
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
For 1-hour TTL: `anthropic.CacheControlEphemeralParam{TTL: anthropic.CacheControlEphemeralTTLTTL1h}`. There's also a top-level `CacheControl` on `MessageNewParams` that auto-places on the last cacheable block.
|
|
115
|
+
|
|
116
|
+
Verify hits via `resp.Usage.CacheCreationInputTokens` / `resp.Usage.CacheReadInputTokens`.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Stop Details
|
|
121
|
+
|
|
122
|
+
When `StopReason` is `anthropic.StopReasonRefusal`, the response includes structured `StopDetails`:
|
|
123
|
+
|
|
124
|
+
```go
|
|
125
|
+
if resp.StopReason == anthropic.StopReasonRefusal {
|
|
126
|
+
fmt.Println("Category:", resp.StopDetails.Category) // e.g. "cyber", "bio", "reasoning_extraction", "frontier_llm", or "" — see docs for the full set
|
|
127
|
+
fmt.Println("Explanation:", resp.StopDetails.Explanation)
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Refusal fallbacks (Claude Fable 5) — opt in by default.** Fallbacks are opt-in: without them a refused request simply stops. In `claude-fable-5` code, include `Fallbacks: []anthropic.BetaFallbackParam{{Model: "claude-opus-4-8"}}` plus the `anthropic.AnthropicBetaServerSideFallback2026_06_01` beta on `client.Beta.Messages.New` by default — a policy decline is re-served by the fallback model inside the same call. Not available on Amazon Bedrock, Vertex AI, or Microsoft Foundry — register the client-side middleware there: `option.WithMiddleware(betafallback.BetaRefusalFallbackMiddleware(...))` from `lib/betafallback`, with per-conversation state via `betafallback.WithBetaFallbackState(&betafallback.BetaFallbackState{})`. Full semantics (billing, sticky routing, streaming) and a runnable example: `shared/model-migration.md` → Migrating to Claude Fable 5 → `refusal` stop reason, and the Go SDK repo's `examples/` (WebFetch via `shared/live-sources.md`).
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## PDF / Document Input
|
|
136
|
+
|
|
137
|
+
`NewDocumentBlock` generic helper accepts any source type. `MediaType`/`Type` are auto-set.
|
|
138
|
+
|
|
139
|
+
```go
|
|
140
|
+
b64 := base64.StdEncoding.EncodeToString(pdfBytes)
|
|
141
|
+
|
|
142
|
+
msg := anthropic.NewUserMessage(
|
|
143
|
+
anthropic.NewDocumentBlock(anthropic.Base64PDFSourceParam{Data: b64}),
|
|
144
|
+
anthropic.NewTextBlock("Summarize this document"),
|
|
145
|
+
)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Other sources: `URLPDFSourceParam{URL: "https://..."}`, `PlainTextSourceParam{Data: "..."}`.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Context Editing / Compaction (Beta)
|
|
153
|
+
|
|
154
|
+
Use `Beta.Messages.New` with `ContextManagement` on `BetaMessageNewParams`. There is no `NewBetaAssistantMessage` — use `.ToParam()` for the round-trip.
|
|
155
|
+
|
|
156
|
+
```go
|
|
157
|
+
params := anthropic.BetaMessageNewParams{
|
|
158
|
+
Model: anthropic.ModelClaudeOpus4_8, // also supported: ModelClaudeSonnet4_6
|
|
159
|
+
MaxTokens: 16000,
|
|
160
|
+
Betas: []anthropic.AnthropicBeta{"compact-2026-01-12"},
|
|
161
|
+
ContextManagement: anthropic.BetaContextManagementConfigParam{
|
|
162
|
+
Edits: []anthropic.BetaContextManagementConfigEditUnionParam{
|
|
163
|
+
{OfCompact20260112: &anthropic.BetaCompact20260112EditParam{}},
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
Messages: []anthropic.BetaMessageParam{ /* ... */ },
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
resp, err := client.Beta.Messages.New(ctx, params)
|
|
170
|
+
if err != nil {
|
|
171
|
+
log.Fatal(err)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Round-trip: append response to history via .ToParam()
|
|
175
|
+
params.Messages = append(params.Messages, resp.ToParam())
|
|
176
|
+
|
|
177
|
+
// Read compaction blocks from the response
|
|
178
|
+
for _, block := range resp.Content {
|
|
179
|
+
if c, ok := block.AsAny().(anthropic.BetaCompactionBlock); ok {
|
|
180
|
+
fmt.Println("compaction summary:", c.Content)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Other edit types: `BetaClearToolUses20250919EditParam`, `BetaClearThinking20251015EditParam` — these need `Betas: []anthropic.AnthropicBeta{"context-management-2025-06-27"}`, not `compact-2026-01-12`.
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Tool Use — Go
|
|
2
|
+
|
|
3
|
+
For conceptual overview (tool definitions, tool choice, tips), see [shared/tool-use-concepts.md](../../shared/tool-use-concepts.md).
|
|
4
|
+
|
|
5
|
+
## Tool Use
|
|
6
|
+
|
|
7
|
+
### Tool Runner (Beta — Recommended)
|
|
8
|
+
|
|
9
|
+
**Beta:** The Go SDK provides `BetaToolRunner` for automatic tool use loops via the `toolrunner` package.
|
|
10
|
+
|
|
11
|
+
```go
|
|
12
|
+
import (
|
|
13
|
+
"context"
|
|
14
|
+
"fmt"
|
|
15
|
+
"log"
|
|
16
|
+
|
|
17
|
+
"github.com/anthropics/anthropic-sdk-go"
|
|
18
|
+
"github.com/anthropics/anthropic-sdk-go/toolrunner"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
// Define tool input with jsonschema tags for automatic schema generation
|
|
22
|
+
type GetWeatherInput struct {
|
|
23
|
+
City string `json:"city" jsonschema:"required,description=The city name"`
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Create a tool with automatic schema generation from struct tags
|
|
27
|
+
weatherTool, err := toolrunner.NewBetaToolFromJSONSchema(
|
|
28
|
+
"get_weather",
|
|
29
|
+
"Get current weather for a city",
|
|
30
|
+
func(ctx context.Context, input GetWeatherInput) (anthropic.BetaToolResultBlockParamContentUnion, error) {
|
|
31
|
+
return anthropic.BetaToolResultBlockParamContentUnion{
|
|
32
|
+
OfText: &anthropic.BetaTextBlockParam{
|
|
33
|
+
Text: fmt.Sprintf("The weather in %s is sunny, 72°F", input.City),
|
|
34
|
+
},
|
|
35
|
+
}, nil
|
|
36
|
+
},
|
|
37
|
+
)
|
|
38
|
+
if err != nil {
|
|
39
|
+
log.Fatal(err)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Create a tool runner that handles the conversation loop automatically
|
|
43
|
+
runner := client.Beta.Messages.NewToolRunner(
|
|
44
|
+
[]anthropic.BetaTool{weatherTool},
|
|
45
|
+
anthropic.BetaToolRunnerParams{
|
|
46
|
+
BetaMessageNewParams: anthropic.BetaMessageNewParams{
|
|
47
|
+
Model: anthropic.ModelClaudeOpus4_8,
|
|
48
|
+
MaxTokens: 16000,
|
|
49
|
+
Messages: []anthropic.BetaMessageParam{
|
|
50
|
+
anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("What's the weather in Paris?")),
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
MaxIterations: 5,
|
|
54
|
+
},
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
// Run until Claude produces a final response
|
|
58
|
+
message, err := runner.RunToCompletion(context.Background())
|
|
59
|
+
if err != nil {
|
|
60
|
+
log.Fatal(err)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// RunToCompletion returns *BetaMessage; content is []BetaContentBlockUnion.
|
|
64
|
+
// Narrow via AsAny() switch — note the Beta-namespace types (BetaTextBlock,
|
|
65
|
+
// not TextBlock):
|
|
66
|
+
for _, block := range message.Content {
|
|
67
|
+
switch block := block.AsAny().(type) {
|
|
68
|
+
case anthropic.BetaTextBlock:
|
|
69
|
+
fmt.Println(block.Text)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Key features of the Go tool runner:**
|
|
75
|
+
|
|
76
|
+
- Automatic schema generation from Go structs via `jsonschema` tags
|
|
77
|
+
- `RunToCompletion()` for simple one-shot usage
|
|
78
|
+
- `All()` iterator for processing each message in the conversation
|
|
79
|
+
- `NextMessage()` for step-by-step iteration
|
|
80
|
+
- Streaming variant via `NewToolRunnerStreaming()` with `AllStreaming()`
|
|
81
|
+
|
|
82
|
+
### Manual Loop
|
|
83
|
+
|
|
84
|
+
For fine-grained control over the agentic loop, define tools with `ToolParam`, check `StopReason`, execute tools yourself, and feed `tool_result` blocks back. This is the pattern when you need to intercept, validate, or log tool calls.
|
|
85
|
+
|
|
86
|
+
Derived from `anthropic-sdk-go/examples/tools/main.go`.
|
|
87
|
+
|
|
88
|
+
```go
|
|
89
|
+
package main
|
|
90
|
+
|
|
91
|
+
import (
|
|
92
|
+
"context"
|
|
93
|
+
"encoding/json"
|
|
94
|
+
"fmt"
|
|
95
|
+
"log"
|
|
96
|
+
|
|
97
|
+
"github.com/anthropics/anthropic-sdk-go"
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
func main() {
|
|
101
|
+
client := anthropic.NewClient()
|
|
102
|
+
|
|
103
|
+
// 1. Define tools. ToolParam.InputSchema uses a map, no struct tags needed.
|
|
104
|
+
addTool := anthropic.ToolParam{
|
|
105
|
+
Name: "add",
|
|
106
|
+
Description: anthropic.String("Add two integers"),
|
|
107
|
+
InputSchema: anthropic.ToolInputSchemaParam{
|
|
108
|
+
Properties: map[string]any{
|
|
109
|
+
"a": map[string]any{"type": "integer"},
|
|
110
|
+
"b": map[string]any{"type": "integer"},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
}
|
|
114
|
+
// ToolParam must be wrapped in ToolUnionParam for the Tools slice
|
|
115
|
+
tools := []anthropic.ToolUnionParam{{OfTool: &addTool}}
|
|
116
|
+
|
|
117
|
+
messages := []anthropic.MessageParam{
|
|
118
|
+
anthropic.NewUserMessage(anthropic.NewTextBlock("What is 2 + 3?")),
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
for {
|
|
122
|
+
resp, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
|
|
123
|
+
Model: anthropic.ModelClaudeSonnet4_6,
|
|
124
|
+
MaxTokens: 16000,
|
|
125
|
+
Messages: messages,
|
|
126
|
+
Tools: tools,
|
|
127
|
+
})
|
|
128
|
+
if err != nil {
|
|
129
|
+
log.Fatal(err)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// 2. Append the assistant response to history BEFORE processing tool calls.
|
|
133
|
+
// resp.ToParam() converts Message → MessageParam in one call.
|
|
134
|
+
messages = append(messages, resp.ToParam())
|
|
135
|
+
|
|
136
|
+
// 3. Walk content blocks. ContentBlockUnion is a flattened struct;
|
|
137
|
+
// use block.AsAny().(type) to switch on the actual variant.
|
|
138
|
+
toolResults := []anthropic.ContentBlockParamUnion{}
|
|
139
|
+
for _, block := range resp.Content {
|
|
140
|
+
switch variant := block.AsAny().(type) {
|
|
141
|
+
case anthropic.TextBlock:
|
|
142
|
+
fmt.Println(variant.Text)
|
|
143
|
+
case anthropic.ToolUseBlock:
|
|
144
|
+
// 4. Parse the tool input. Use variant.JSON.Input.Raw() to get the
|
|
145
|
+
// raw JSON — block.Input is json.RawMessage, not the parsed value.
|
|
146
|
+
var in struct {
|
|
147
|
+
A int `json:"a"`
|
|
148
|
+
B int `json:"b"`
|
|
149
|
+
}
|
|
150
|
+
if err := json.Unmarshal([]byte(variant.JSON.Input.Raw()), &in); err != nil {
|
|
151
|
+
log.Fatal(err)
|
|
152
|
+
}
|
|
153
|
+
result := fmt.Sprintf("%d", in.A+in.B)
|
|
154
|
+
// 5. NewToolResultBlock(toolUseID, content, isError) builds the
|
|
155
|
+
// ContentBlockParamUnion for you. block.ID is the tool_use_id.
|
|
156
|
+
toolResults = append(toolResults,
|
|
157
|
+
anthropic.NewToolResultBlock(block.ID, result, false))
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// 6. Exit when Claude stops asking for tools
|
|
162
|
+
if resp.StopReason != anthropic.StopReasonToolUse {
|
|
163
|
+
break
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// 7. Tool results go in a user message (variadic: all results in one turn)
|
|
167
|
+
messages = append(messages, anthropic.NewUserMessage(toolResults...))
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Key API surface:**
|
|
173
|
+
|
|
174
|
+
| Symbol | Purpose |
|
|
175
|
+
|---|---|
|
|
176
|
+
| `resp.ToParam()` | Convert `Message` response → `MessageParam` for history |
|
|
177
|
+
| `block.AsAny().(type)` | Type-switch on `ContentBlockUnion` variants |
|
|
178
|
+
| `variant.JSON.Input.Raw()` | Raw JSON string of tool input (for `json.Unmarshal`) |
|
|
179
|
+
| `anthropic.NewToolResultBlock(id, content, isError)` | Build `tool_result` block |
|
|
180
|
+
| `anthropic.NewUserMessage(blocks...)` | Wrap tool results as a user turn |
|
|
181
|
+
| `anthropic.StopReasonToolUse` | `StopReason` constant to check loop termination |
|
|
182
|
+
| `anthropic.ToolUnionParam{OfTool: &t}` | Wrap `ToolParam` in the union for `Tools:` |
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Anthropic-Defined Tools
|
|
187
|
+
|
|
188
|
+
Version-suffixed struct names with `Param` suffix. `Name`/`Type` are `constant.*` types — zero value marshals correctly, so `{}` works. Wrap in `ToolUnionParam` with the matching `Of*` field. Web search and code execution are server-executed; bash and text editor are client-executed (you handle the `tool_use` locally — see `shared/tool-use-concepts.md`).
|
|
189
|
+
|
|
190
|
+
```go
|
|
191
|
+
Tools: []anthropic.ToolUnionParam{
|
|
192
|
+
{OfWebSearchTool20260209: &anthropic.WebSearchTool20260209Param{}},
|
|
193
|
+
{OfBashTool20250124: &anthropic.ToolBash20250124Param{}},
|
|
194
|
+
{OfTextEditor20250728: &anthropic.ToolTextEditor20250728Param{}},
|
|
195
|
+
{OfCodeExecutionTool20260120: &anthropic.CodeExecutionTool20260120Param{}},
|
|
196
|
+
},
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Also available: `WebFetchTool20260209Param`, `ToolSearchToolBm25_20251119Param`, `ToolSearchToolRegex20251119Param`. For the advisor and memory tools, use `BetaAdvisorTool20260301Param` / `BetaMemoryTool20250818Param` in the beta namespace on `client.Beta.Messages.New`.
|
|
200
|
+
|
|
201
|
+
### Advisor tool (beta)
|
|
202
|
+
|
|
203
|
+
Server-side — no tool_result round-trip. The advisor model must be ≥ the executor (top-level) model; invalid pairs return 400.
|
|
204
|
+
|
|
205
|
+
```go
|
|
206
|
+
response, err := client.Beta.Messages.New(ctx, anthropic.BetaMessageNewParams{
|
|
207
|
+
Model: anthropic.ModelClaudeSonnet4_6,
|
|
208
|
+
MaxTokens: 4096,
|
|
209
|
+
Tools: []anthropic.BetaToolUnionParam{
|
|
210
|
+
{OfAdvisorTool20260301: &anthropic.BetaAdvisorTool20260301Param{
|
|
211
|
+
Model: anthropic.ModelClaudeOpus4_8,
|
|
212
|
+
}},
|
|
213
|
+
},
|
|
214
|
+
Messages: []anthropic.BetaMessageParam{ /* ... */ },
|
|
215
|
+
Betas: []anthropic.AnthropicBeta{anthropic.AnthropicBetaAdvisorTool2026_03_01},
|
|
216
|
+
})
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Streaming — Go
|
|
2
|
+
|
|
3
|
+
## Streaming
|
|
4
|
+
|
|
5
|
+
```go
|
|
6
|
+
stream := client.Messages.NewStreaming(context.Background(), anthropic.MessageNewParams{
|
|
7
|
+
Model: anthropic.ModelClaudeOpus4_8,
|
|
8
|
+
MaxTokens: 64000,
|
|
9
|
+
Messages: []anthropic.MessageParam{
|
|
10
|
+
anthropic.NewUserMessage(anthropic.NewTextBlock("Write a haiku")),
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
for stream.Next() {
|
|
15
|
+
event := stream.Current()
|
|
16
|
+
switch eventVariant := event.AsAny().(type) {
|
|
17
|
+
case anthropic.ContentBlockDeltaEvent:
|
|
18
|
+
switch deltaVariant := eventVariant.Delta.AsAny().(type) {
|
|
19
|
+
case anthropic.TextDelta:
|
|
20
|
+
fmt.Print(deltaVariant.Text)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if err := stream.Err(); err != nil {
|
|
25
|
+
log.Fatal(err)
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Accumulating the final message** (there is no `GetFinalMessage()` on the stream):
|
|
30
|
+
|
|
31
|
+
```go
|
|
32
|
+
stream := client.Messages.NewStreaming(ctx, params)
|
|
33
|
+
message := anthropic.Message{}
|
|
34
|
+
for stream.Next() {
|
|
35
|
+
message.Accumulate(stream.Current())
|
|
36
|
+
}
|
|
37
|
+
if err := stream.Err(); err != nil { log.Fatal(err) }
|
|
38
|
+
// message.Content now has the complete response
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
# Files API — Go
|
|
45
|
+
|
|
46
|
+
## Files API (Beta)
|
|
47
|
+
|
|
48
|
+
Under `client.Beta.Files`. Method is **`Upload`** (NOT `New`/`Create`), params struct is `BetaFileUploadParams`. The `File` field takes an `io.Reader`; use `anthropic.File()` to attach a filename + content-type for the multipart encoding.
|
|
49
|
+
|
|
50
|
+
```go
|
|
51
|
+
f, _ := os.Open("./upload_me.txt")
|
|
52
|
+
defer f.Close()
|
|
53
|
+
|
|
54
|
+
meta, err := client.Beta.Files.Upload(ctx, anthropic.BetaFileUploadParams{
|
|
55
|
+
File: anthropic.File(f, "upload_me.txt", "text/plain"),
|
|
56
|
+
Betas: []anthropic.AnthropicBeta{anthropic.AnthropicBetaFilesAPI2025_04_14},
|
|
57
|
+
})
|
|
58
|
+
// meta.ID is the file_id to reference in subsequent message requests
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Other `Beta.Files` methods: `List`, `Delete`, `Download`, `GetMetadata`.
|
|
62
|
+
|
|
63
|
+
---
|