MCPcopy Create free account
hub / github.com/Zoo-Code-Org/Zoo-Code / createMessage

Method createMessage

src/api/providers/anthropic.ts:51–354  ·  view source on GitHub ↗
(
		systemPrompt: string,
		messages: Anthropic.Messages.MessageParam[],
		metadata?: ApiHandlerCreateMessageMetadata,
	)

Source from the content-addressed store, hash-verified

49 }
50
51 async *createMessage(
52 systemPrompt: string,
53 messages: Anthropic.Messages.MessageParam[],
54 metadata?: ApiHandlerCreateMessageMetadata,
55 ): ApiStream {
56 let stream: AnthropicStream<Anthropic.Messages.RawMessageStreamEvent>
57 const cacheControl: CacheControlEphemeral = { type: "ephemeral" }
58 const {
59 id: modelId,
60 betas = ["fine-grained-tool-streaming-2025-05-14"],
61 maxTokens,
62 temperature,
63 info,
64 reasoningBudget,
65 } = this.getModel()
66 const thinking = getAnthropicProviderReasoning({
67 model: info,
68 reasoningBudget,
69 settings: this.options,
70 })
71
72 // Filter out non-Anthropic blocks (reasoning, thoughtSignature, etc.) before sending to the API
73 const sanitizedMessages = filterNonAnthropicBlocks(messages)
74
75 // Add 1M context beta flag if enabled for supported models (Claude Sonnet 4/4.5/4.6, Opus 4.6)
76 if (
77 (modelId === "claude-sonnet-4-20250514" ||
78 modelId === "claude-sonnet-4-5" ||
79 modelId === "claude-sonnet-4-6" ||
80 modelId === "claude-opus-4-6") &&
81 this.options.anthropicBeta1MContext
82 ) {
83 betas.push("context-1m-2025-08-07")
84 }
85
86 const nativeToolParams = {
87 tools: convertOpenAIToolsToAnthropic(metadata?.tools ?? []),
88 tool_choice: convertOpenAIToolChoiceToAnthropic(metadata?.tool_choice, metadata?.parallelToolCalls),
89 }
90
91 switch (modelId) {
92 case "claude-sonnet-5":
93 case "claude-sonnet-4-6":
94 case "claude-sonnet-4-5":
95 case "claude-sonnet-4-20250514":
96 case "claude-opus-4-6":
97 case "claude-opus-4-7":
98 case "claude-opus-4-8":
99 case "claude-fable-5":
100 case "claude-opus-4-5-20251101":
101 case "claude-opus-4-1-20250805":
102 case "claude-opus-4-20250514":
103 case "claude-3-7-sonnet-20250219":
104 case "claude-3-5-sonnet-20241022":
105 case "claude-3-5-haiku-20241022":
106 case "claude-3-opus-20240229":
107 case "claude-haiku-4-5-20251001":
108 case "claude-3-haiku-20240307": {

Callers

nothing calls this directly

Calls 9

getModelMethod · 0.95
filterNonAnthropicBlocksFunction · 0.90
captureExceptionMethod · 0.65
StringInterface · 0.50
createMethod · 0.45

Tested by

no test coverage detected