Raise Anthropic default max tokens
This commit is contained in:
@@ -140,6 +140,94 @@ test("plain Chat Completions stream does not send Sybil-managed tools", async ()
|
||||
assert.equal(events.at(-1)?.type === "done" ? events.at(-1)?.result.text : null, "Hi");
|
||||
});
|
||||
|
||||
test("Messages API defaults max_tokens to the Anthropic model maximum", async () => {
|
||||
let requestBody: any = null;
|
||||
let retrievedModel: string | null = null;
|
||||
const client = {
|
||||
models: {
|
||||
retrieve: async (model: string) => {
|
||||
retrievedModel = model;
|
||||
return { id: model, max_tokens: 128000 };
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
create: async (body: any) => {
|
||||
requestBody = body;
|
||||
return {
|
||||
content: [{ type: "text", text: "Done" }],
|
||||
usage: { input_tokens: 1, output_tokens: 1 },
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const result = await completeWithMessagesApi({
|
||||
client: client as any,
|
||||
model: "claude-max-default-test",
|
||||
messages: [{ role: "user", content: "Say done" }],
|
||||
});
|
||||
|
||||
assert.equal(retrievedModel, "claude-max-default-test");
|
||||
assert.equal(requestBody?.max_tokens, 128000);
|
||||
assert.equal(result.text, "Done");
|
||||
});
|
||||
|
||||
test("Messages API preserves explicit maxTokens", async () => {
|
||||
let requestBody: any = null;
|
||||
let didRetrieveModel = false;
|
||||
const client = {
|
||||
models: {
|
||||
retrieve: async () => {
|
||||
didRetrieveModel = true;
|
||||
return { max_tokens: 128000 };
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
create: async (body: any) => {
|
||||
requestBody = body;
|
||||
return streamFrom([
|
||||
{
|
||||
type: "message_start",
|
||||
message: {
|
||||
usage: { input_tokens: 1, output_tokens: 0 },
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "content_block_start",
|
||||
index: 0,
|
||||
content_block: { type: "text", text: "" },
|
||||
},
|
||||
{
|
||||
type: "content_block_delta",
|
||||
index: 0,
|
||||
delta: { type: "text_delta", text: "Done" },
|
||||
},
|
||||
{ type: "content_block_stop", index: 0 },
|
||||
{
|
||||
type: "message_delta",
|
||||
delta: { stop_reason: "end_turn", stop_sequence: null },
|
||||
usage: { output_tokens: 1 },
|
||||
},
|
||||
{ type: "message_stop" },
|
||||
]);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const events = await collectEvents(
|
||||
streamWithMessagesApi({
|
||||
client: client as any,
|
||||
model: "claude-explicit-max-test",
|
||||
messages: [{ role: "user", content: "Say done" }],
|
||||
maxTokens: 4096,
|
||||
})
|
||||
);
|
||||
|
||||
assert.equal(didRetrieveModel, false);
|
||||
assert.equal(requestBody?.max_tokens, 4096);
|
||||
assert.equal(events.at(-1)?.type === "done" ? events.at(-1)?.result.text : null, "Done");
|
||||
});
|
||||
|
||||
test("fetch_url sends browser-like navigation headers", async () => {
|
||||
const originalFetch = globalThis.fetch;
|
||||
const fetchCalls: Array<{ input: RequestInfo | URL; init?: RequestInit }> = [];
|
||||
|
||||
Reference in New Issue
Block a user