Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/core/error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { castToError } from '../internal/errors';

export class AnthropicError extends Error {}

export class UnableToParseToolParameterError extends AnthropicError {}

export class APIError<
TStatus extends number | undefined = number | undefined,
THeaders extends Headers | undefined = Headers | undefined,
Expand Down
7 changes: 5 additions & 2 deletions src/lib/BetaMessageStream.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { partialParse } from '../_vendor/partial-json-parser/parser';
import type { Logger } from '../client';
import { AnthropicError, APIUserAbortError } from '../error';
import { AnthropicError, APIUserAbortError, UnableToParseToolParameterError } from '../error';
import { isAbortError } from '../internal/errors';
import { type RequestOptions } from '../internal/request-options';
import {
Expand Down Expand Up @@ -413,6 +413,9 @@
// NOTE: _emit('error', error) should only be called from #handleError().

const error = args[0] as AnthropicError;
if (this.#params?.ignore_tool_parameter_parse_errors && error instanceof UnableToParseToolParameterError) {

Check failure on line 416 in src/lib/BetaMessageStream.ts

View workflow job for this annotation

GitHub Actions / lint

Replace `this.#params?.ignore_tool_parameter_parse_errors·&&·error·instanceof·UnableToParseToolParameterError` with `⏎········this.#params?.ignore_tool_parameter_parse_errors·&&⏎········error·instanceof·UnableToParseToolParameterError⏎······`
return;
}
if (!this.#catchingPromiseCreated && !listeners?.length) {
// Trigger an unhandled rejection if the user hasn't registered any error handlers.
// If you are seeing stack traces here, make sure to handle errors via either:
Expand Down Expand Up @@ -635,7 +638,7 @@
try {
newContent.input = partialParse(jsonBuf);
} catch (err) {
const error = new AnthropicError(
const error = new UnableToParseToolParameterError(
`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${err}. JSON: ${jsonBuf}`,
);
this.#handleError(error);
Expand Down
10 changes: 10 additions & 0 deletions src/resources/beta/messages/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3192,6 +3192,16 @@
* Header param: Optional header to specify the beta version(s) you want to use.
*/
betas?: Array<BetaAPI.AnthropicBeta>;


Check failure on line 3196 in src/resources/beta/messages/messages.ts

View workflow job for this annotation

GitHub Actions / lint

Delete `⏎`
/**
* Body param: Whether to ignore tool parameter parse errors.
*
* If set to `true`, the model will ignore tool parameter parse errors and return them in the response.
*
* If set to `false`, the model will return an error if a tool parameter parse error occurs.
*/
ignore_tool_parameter_parse_errors?: boolean;
}

export namespace MessageCreateParams {
Expand Down
Loading