@langchain/xai 1.4.17 → 1.5.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/CHANGELOG.md +21 -0
- package/dist/chat_models/completions.cjs +1 -1
- package/dist/chat_models/completions.cjs.map +1 -1
- package/dist/chat_models/completions.d.cts +9 -10
- package/dist/chat_models/completions.d.cts.map +1 -1
- package/dist/chat_models/completions.d.ts +9 -10
- package/dist/chat_models/completions.d.ts.map +1 -1
- package/dist/chat_models/completions.js +1 -1
- package/dist/chat_models/completions.js.map +1 -1
- package/dist/chat_models/responses-types.d.cts +94 -95
- package/dist/chat_models/responses-types.d.cts.map +1 -1
- package/dist/chat_models/responses-types.d.ts +94 -95
- package/dist/chat_models/responses-types.d.ts.map +1 -1
- package/dist/chat_models/responses.cjs +1 -1
- package/dist/chat_models/responses.cjs.map +1 -1
- package/dist/chat_models/responses.d.cts +2 -2
- package/dist/chat_models/responses.d.cts.map +1 -1
- package/dist/chat_models/responses.d.ts +2 -2
- package/dist/chat_models/responses.d.ts.map +1 -1
- package/dist/chat_models/responses.js +1 -1
- package/dist/chat_models/responses.js.map +1 -1
- package/dist/live_search.d.cts +7 -8
- package/dist/live_search.d.cts.map +1 -1
- package/dist/live_search.d.ts +7 -8
- package/dist/live_search.d.ts.map +1 -1
- package/dist/tools/code_execution.d.cts +3 -4
- package/dist/tools/code_execution.d.cts.map +1 -1
- package/dist/tools/code_execution.d.ts +3 -4
- package/dist/tools/code_execution.d.ts.map +1 -1
- package/dist/tools/collections_search.d.cts +4 -5
- package/dist/tools/collections_search.d.cts.map +1 -1
- package/dist/tools/collections_search.d.ts +4 -5
- package/dist/tools/collections_search.d.ts.map +1 -1
- package/dist/tools/index.d.cts +1 -2
- package/dist/tools/index.d.cts.map +1 -1
- package/dist/tools/index.d.ts +1 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/live_search.d.cts +10 -11
- package/dist/tools/live_search.d.cts.map +1 -1
- package/dist/tools/live_search.d.ts +10 -11
- package/dist/tools/live_search.d.ts.map +1 -1
- package/dist/tools/web_search.d.cts +4 -5
- package/dist/tools/web_search.d.cts.map +1 -1
- package/dist/tools/web_search.d.ts +4 -5
- package/dist/tools/web_search.d.ts.map +1 -1
- package/dist/tools/x_search.d.cts +4 -5
- package/dist/tools/x_search.d.cts.map +1 -1
- package/dist/tools/x_search.d.ts +4 -5
- package/dist/tools/x_search.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses-types.d.ts","names":[],"sources":["../../src/chat_models/responses-types.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"responses-types.d.ts","names":[],"sources":["../../src/chat_models/responses-types.ts"],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ var ChatXAIResponses = class extends _langchain_core_language_models_chat_models
|
|
|
56
56
|
model: modelOrFields
|
|
57
57
|
} : modelOrFields ?? {};
|
|
58
58
|
super(fields);
|
|
59
|
-
this._addVersion("@langchain/xai", "1.
|
|
59
|
+
this._addVersion("@langchain/xai", "1.5.0");
|
|
60
60
|
const apiKey = fields?.apiKey ?? (0, _langchain_core_utils_env.getEnvironmentVariable)("XAI_API_KEY");
|
|
61
61
|
if (!apiKey) throw new Error(`xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the "apiKey" field.`);
|
|
62
62
|
this.apiKey = apiKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.cjs","names":["BaseChatModel","getEnvironmentVariable","convertMessagesToResponsesInput","convertResponseToAIMessage","extractTextFromOutput","convertXAIResponsesStream","convertStreamEventToChunk"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"responses.cjs","names":["BaseChatModel","getEnvironmentVariable","convertMessagesToResponsesInput","convertResponseToAIMessage","extractTextFromOutput","convertXAIResponsesStream","convertStreamEventToChunk"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ import { ChatGenerationChunk, ChatResult } from "@langchain/core/outputs";
|
|
|
25
25
|
* console.log(result.content);
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
|
-
declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
|
|
28
|
+
export declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
|
|
29
29
|
static lc_name(): string;
|
|
30
30
|
lc_serializable: boolean;
|
|
31
31
|
lc_namespace: string[];
|
|
@@ -67,5 +67,5 @@ declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions =
|
|
|
67
67
|
_streamResponseChunks(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
|
|
68
68
|
}
|
|
69
69
|
//#endregion
|
|
70
|
-
export {
|
|
70
|
+
export type { ChatXAIResponsesCallOptions, ChatXAIResponsesInput, ChatXAIResponsesInvocationParams };
|
|
71
71
|
//# sourceMappingURL=responses.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+Da,iBACX,oBAAoB,8BAA8B,qCAC1C,cAAc;SACf;EAIP;EAEA;MAEI;KAAiB;;MAMjB;KAAiB;;EAUrB;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA,mBAAmB;EAEnB,YAAY;EAEZ,QAAQ;EAMR,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;EAsCrB;EAIS,YAAY,qCAAqC;EAUjD,UAAU;EAkBnB,iBACE,sCACC;;;;YA2Ba,aACd,SAAS,uCACR,QAAQ;YAEK,aACd,SAAS,oCACR,QAAQ,cAAc;;;;YAuCR,sBACf,aACA,SAAS,wBACT,SAAS,2BACR,cAAc;EA0DX,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EAuDJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;EA8BX,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe"}
|
|
@@ -25,7 +25,7 @@ import { ChatModelStreamEvent } from "@langchain/core/language_models/event";
|
|
|
25
25
|
* console.log(result.content);
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
|
-
declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
|
|
28
|
+
export declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions> extends BaseChatModel<CallOptions> {
|
|
29
29
|
static lc_name(): string;
|
|
30
30
|
lc_serializable: boolean;
|
|
31
31
|
lc_namespace: string[];
|
|
@@ -67,5 +67,5 @@ declare class ChatXAIResponses<CallOptions extends ChatXAIResponsesCallOptions =
|
|
|
67
67
|
_streamResponseChunks(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
|
|
68
68
|
}
|
|
69
69
|
//#endregion
|
|
70
|
-
export {
|
|
70
|
+
export type { ChatXAIResponsesCallOptions, ChatXAIResponsesInput, ChatXAIResponsesInvocationParams };
|
|
71
71
|
//# sourceMappingURL=responses.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+Da,iBACX,oBAAoB,8BAA8B,qCAC1C,cAAc;SACf;EAIP;EAEA;MAEI;KAAiB;;MAMjB;KAAiB;;EAUrB;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA,mBAAmB;EAEnB,YAAY;EAEZ,QAAQ;EAMR,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;EAsCrB;EAIS,YAAY,qCAAqC;EAUjD,UAAU;EAkBnB,iBACE,sCACC;;;;YA2Ba,aACd,SAAS,uCACR,QAAQ;YAEK,aACd,SAAS,oCACR,QAAQ,cAAc;;;;YAuCR,sBACf,aACA,SAAS,wBACT,SAAS,2BACR,cAAc;EA0DX,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EAuDJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;EA8BX,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe"}
|
|
@@ -56,7 +56,7 @@ var ChatXAIResponses = class extends BaseChatModel {
|
|
|
56
56
|
model: modelOrFields
|
|
57
57
|
} : modelOrFields ?? {};
|
|
58
58
|
super(fields);
|
|
59
|
-
this._addVersion("@langchain/xai", "1.
|
|
59
|
+
this._addVersion("@langchain/xai", "1.5.0");
|
|
60
60
|
const apiKey = fields?.apiKey ?? getEnvironmentVariable("XAI_API_KEY");
|
|
61
61
|
if (!apiKey) throw new Error(`xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the "apiKey" field.`);
|
|
62
62
|
this.apiKey = apiKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","names":[],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"responses.js","names":[],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, BaseMessage } from \"@langchain/core/messages\";\nimport {\n BaseChatModel,\n type LangSmithParams,\n} from \"@langchain/core/language_models/chat_models\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { Serialized } from \"@langchain/core/load/serializable\";\n\nimport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n XAIResponse,\n XAIResponsesCreateParams,\n XAIResponsesCreateParamsNonStreaming,\n XAIResponsesCreateParamsStreaming,\n XAIResponsesReasoning,\n XAIResponsesSearchParameters,\n XAIResponsesStreamEvent,\n XAIResponsesTool,\n} from \"./responses-types.js\";\n\nimport {\n convertMessagesToResponsesInput,\n convertResponseToAIMessage,\n convertStreamEventToChunk,\n extractTextFromOutput,\n} from \"../converters/responses.js\";\nimport { convertXAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\n// Re-export types for convenience\nexport type {\n ChatXAIResponsesCallOptions,\n ChatXAIResponsesInput,\n ChatXAIResponsesInvocationParams,\n};\n\n// ============================================================================\n// Main Class\n// ============================================================================\n\n/**\n * xAI Responses API chat model integration.\n *\n * This class provides access to xAI's Responses API, which offers enhanced\n * capabilities including built-in tools, reasoning, and search.\n *\n * @example\n * ```typescript\n * import { ChatXAIResponses } from \"@langchain/xai\";\n *\n * const llm = new ChatXAIResponses({\n * model: \"grok-3\",\n * temperature: 0.7,\n * });\n *\n * const result = await llm.invoke(\"What is the capital of France?\");\n * console.log(result.content);\n * ```\n */\nexport class ChatXAIResponses<\n CallOptions extends ChatXAIResponsesCallOptions = ChatXAIResponsesCallOptions,\n> extends BaseChatModel<CallOptions> {\n static lc_name() {\n return \"ChatXAIResponses\";\n }\n\n lc_serializable = true;\n\n lc_namespace = [\"langchain\", \"chat_models\", \"xai\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"XAI_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"xai_api_key\",\n };\n }\n\n // -------------------------------------------------------------------------\n // Instance Properties\n // -------------------------------------------------------------------------\n\n apiKey: string;\n\n model: string;\n\n streaming: boolean;\n\n temperature?: number;\n\n topP?: number;\n\n maxOutputTokens?: number;\n\n store?: boolean;\n\n user?: string;\n\n baseURL: string;\n\n searchParameters?: XAIResponsesSearchParameters;\n\n reasoning?: XAIResponsesReasoning;\n\n tools?: XAIResponsesTool[];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(model: string, fields?: Omit<ChatXAIResponsesInput, \"model\">);\n constructor(fields?: ChatXAIResponsesInput);\n constructor(\n modelOrFields?: string | ChatXAIResponsesInput,\n fieldsArg?: Omit<ChatXAIResponsesInput, \"model\">\n ) {\n const fields =\n typeof modelOrFields === \"string\"\n ? { ...(fieldsArg ?? {}), model: modelOrFields }\n : (modelOrFields ?? {});\n super(fields);\n\n this._addVersion(\"@langchain/xai\", __PKG_VERSION__);\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"XAI_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `xAI API key not found. Please set the XAI_API_KEY environment variable or provide the key in the \"apiKey\" field.`\n );\n }\n\n this.apiKey = apiKey;\n this.model = fields?.model ?? \"grok-3\";\n this.streaming = fields?.streaming ?? false;\n this.temperature = fields?.temperature;\n this.topP = fields?.topP;\n this.maxOutputTokens = fields?.maxOutputTokens;\n this.store = fields?.store;\n this.user = fields?.user;\n this.baseURL = fields?.baseURL ?? \"https://api.x.ai/v1\";\n this.searchParameters = fields?.searchParameters;\n this.reasoning = fields?.reasoning;\n this.tools = fields?.tools;\n }\n\n // -------------------------------------------------------------------------\n // Metadata Methods\n // -------------------------------------------------------------------------\n\n _llmType(): string {\n return \"xai-responses\";\n }\n\n override getLsParams(options: this[\"ParsedCallOptions\"]): LangSmithParams {\n const params = super.getLsParams(options);\n params.ls_provider = \"xai\";\n params.ls_model_name = this.model;\n params.ls_model_type = \"chat\";\n params.ls_temperature = this.temperature;\n params.ls_max_tokens = this.maxOutputTokens;\n return params;\n }\n\n override toJSON(): Serialized {\n const result = super.toJSON();\n\n if (\n \"kwargs\" in result &&\n typeof result.kwargs === \"object\" &&\n result.kwargs != null\n ) {\n delete (result.kwargs as Record<string, unknown>).apiKey;\n }\n\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Invocation Params\n // -------------------------------------------------------------------------\n\n invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatXAIResponsesInvocationParams {\n return {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n max_output_tokens: this.maxOutputTokens,\n store: this.store,\n user: this.user,\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n include: options?.include,\n text: options?.text,\n search_parameters: options?.search_parameters ?? this.searchParameters,\n reasoning: options?.reasoning ?? this.reasoning,\n tools: options?.tools ?? this.tools,\n tool_choice: options?.tool_choice,\n parallel_tool_calls: options?.parallel_tool_calls,\n };\n }\n\n // -------------------------------------------------------------------------\n // API Call Methods\n // -------------------------------------------------------------------------\n\n /**\n * Makes a request to the xAI Responses API.\n */\n protected async _makeRequest(\n request: XAIResponsesCreateParamsNonStreaming\n ): Promise<XAIResponse>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParamsStreaming\n ): Promise<AsyncIterable<XAIResponsesStreamEvent>>;\n\n protected async _makeRequest(\n request: XAIResponsesCreateParams\n ): Promise<XAIResponse | AsyncIterable<XAIResponsesStreamEvent>> {\n const url = `${this.baseURL}/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n\n if (request.stream) {\n return this._makeStreamingRequest(url, headers, request);\n }\n\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res.json();\n });\n\n return response as XAIResponse;\n }\n\n /**\n * Makes a streaming request to the xAI Responses API.\n */\n protected async *_makeStreamingRequest(\n url: string,\n headers: Record<string, string>,\n request: XAIResponsesCreateParams\n ): AsyncIterable<XAIResponsesStreamEvent> {\n const response = await this.caller.call(async () => {\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n\n if (!res.ok) {\n const errorBody = await res.text();\n throw new Error(\n `xAI API error: ${res.status} ${res.statusText} - ${errorBody}`\n );\n }\n\n return res;\n });\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === \"data: [DONE]\") continue;\n\n if (trimmed.startsWith(\"data: \")) {\n try {\n const data = JSON.parse(trimmed.slice(6));\n yield data as XAIResponsesStreamEvent;\n } catch {\n // Skip invalid JSON\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // -------------------------------------------------------------------------\n // Generation Methods\n // -------------------------------------------------------------------------\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n }\n\n const response = await this._makeRequest({\n input,\n ...invocationParams,\n stream: false,\n } as XAIResponsesCreateParamsNonStreaming);\n\n const aiMessage = convertResponseToAIMessage(response);\n const text = extractTextFromOutput(response.output);\n\n return {\n generations: [\n {\n text,\n message: aiMessage,\n },\n ],\n llmOutput: {\n id: response.id,\n estimatedTokenUsage: response.usage\n ? {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n const shouldStreamUsage = options.streamUsage ?? true;\n\n const abortableStream = async function* (\n source: AsyncIterable<XAIResponsesStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const event of source) {\n if (signal?.aborted) {\n return;\n }\n yield event;\n }\n };\n\n yield* convertXAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n { streamUsage: shouldStreamUsage }\n );\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const invocationParams = this.invocationParams(options);\n const input = convertMessagesToResponsesInput(messages);\n\n const streamIterable = await this._makeRequest({\n input,\n ...invocationParams,\n stream: true,\n } as XAIResponsesCreateParamsStreaming);\n\n for await (const event of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertStreamEventToChunk(event);\n if (chunk) {\n yield chunk;\n await runManager?.handleLLMNewToken(chunk.text || \"\", {\n prompt: 0,\n completion: 0,\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA+DA,IAAa,mBAAb,cAEU,cAA2B;CACnC,OAAO,UAAU;EACf,OAAO;CACT;CAEA,kBAAkB;CAElB,eAAe;EAAC;EAAa;EAAe;CAAK;CAEjD,IAAI,aAAoD;EACtD,OAAO,EACL,QAAQ,cACV;CACF;CAEA,IAAI,aAAoD;EACtD,OAAO,EACL,QAAQ,cACV;CACF;CAMA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAQA,YACE,eACA,WACA;EACA,MAAM,SACJ,OAAO,kBAAkB,WACrB;GAAE,GAAI,aAAa,CAAC;GAAI,OAAO;EAAc,IAC5C,iBAAiB,CAAC;EACzB,MAAM,MAAM;EAEZ,KAAK,YAAY,kBAAA,OAAiC;EAElD,MAAM,SAAS,QAAQ,UAAU,uBAAuB,aAAa;EACrE,IAAI,CAAC,QACH,MAAM,IAAI,MACR,kHACF;EAGF,KAAK,SAAS;EACd,KAAK,QAAQ,QAAQ,SAAS;EAC9B,KAAK,YAAY,QAAQ,aAAa;EACtC,KAAK,cAAc,QAAQ;EAC3B,KAAK,OAAO,QAAQ;EACpB,KAAK,kBAAkB,QAAQ;EAC/B,KAAK,QAAQ,QAAQ;EACrB,KAAK,OAAO,QAAQ;EACpB,KAAK,UAAU,QAAQ,WAAW;EAClC,KAAK,mBAAmB,QAAQ;EAChC,KAAK,YAAY,QAAQ;EACzB,KAAK,QAAQ,QAAQ;CACvB;CAMA,WAAmB;EACjB,OAAO;CACT;CAEA,YAAqB,SAAqD;EACxE,MAAM,SAAS,MAAM,YAAY,OAAO;EACxC,OAAO,cAAc;EACrB,OAAO,gBAAgB,KAAK;EAC5B,OAAO,gBAAgB;EACvB,OAAO,iBAAiB,KAAK;EAC7B,OAAO,gBAAgB,KAAK;EAC5B,OAAO;CACT;CAEA,SAA8B;EAC5B,MAAM,SAAS,MAAM,OAAO;EAE5B,IACE,YAAY,UACZ,OAAO,OAAO,WAAW,YACzB,OAAO,UAAU,MAEjB,OAAQ,OAAO,OAAmC;EAGpD,OAAO;CACT;CAMA,iBACE,SACkC;EAClC,OAAO;GACL,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,OAAO,KAAK;GACZ,mBAAmB,KAAK;GACxB,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,sBAAsB,SAAS;GAC/B,SAAS,SAAS;GAClB,MAAM,SAAS;GACf,mBAAmB,SAAS,qBAAqB,KAAK;GACtD,WAAW,SAAS,aAAa,KAAK;GACtC,OAAO,SAAS,SAAS,KAAK;GAC9B,aAAa,SAAS;GACtB,qBAAqB,SAAS;EAChC;CACF;CAiBA,MAAgB,aACd,SAC+D;EAC/D,MAAM,MAAM,GAAG,KAAK,QAAQ;EAE5B,MAAM,UAAkC;GACtC,gBAAgB;GAChB,eAAe,UAAU,KAAK;EAChC;EAEA,IAAI,QAAQ,QACV,OAAO,KAAK,sBAAsB,KAAK,SAAS,OAAO;EAoBzD,OAAO,MAjBgB,KAAK,OAAO,KAAK,YAAY;GAClD,MAAM,MAAM,MAAM,MAAM,KAAK;IAC3B,QAAQ;IACR;IACA,MAAM,KAAK,UAAU,OAAO;GAC9B,CAAC;GAED,IAAI,CAAC,IAAI,IAAI;IACX,MAAM,YAAY,MAAM,IAAI,KAAK;IACjC,MAAM,IAAI,MACR,kBAAkB,IAAI,OAAO,GAAG,IAAI,WAAW,KAAK,WACtD;GACF;GAEA,OAAO,IAAI,KAAK;EAClB,CAAC;CAGH;;;;CAKA,OAAiB,sBACf,KACA,SACA,SACwC;EAkBxC,MAAM,UAAS,MAjBQ,KAAK,OAAO,KAAK,YAAY;GAClD,MAAM,MAAM,MAAM,MAAM,KAAK;IAC3B,QAAQ;IACR;IACA,MAAM,KAAK,UAAU,OAAO;GAC9B,CAAC;GAED,IAAI,CAAC,IAAI,IAAI;IACX,MAAM,YAAY,MAAM,IAAI,KAAK;IACjC,MAAM,IAAI,MACR,kBAAkB,IAAI,OAAO,GAAG,IAAI,WAAW,KAAK,WACtD;GACF;GAEA,OAAO;EACT,CAAC,EAAA,CAEuB,MAAM,UAAU;EACxC,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,kBAAkB;EAGpC,MAAM,UAAU,IAAI,YAAY;EAChC,IAAI,SAAS;EAEb,IAAI;GACF,OAAO,MAAM;IACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;IAC1C,IAAI,MAAM;IAEV,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;IAChD,MAAM,QAAQ,OAAO,MAAM,IAAI;IAC/B,SAAS,MAAM,IAAI,KAAK;IAExB,KAAK,MAAM,QAAQ,OAAO;KACxB,MAAM,UAAU,KAAK,KAAK;KAC1B,IAAI,CAAC,WAAW,YAAY,gBAAgB;KAE5C,IAAI,QAAQ,WAAW,QAAQ,GAC7B,IAAI;MAEF,MADa,KAAK,MAAM,QAAQ,MAAM,CAAC,CAC9B;KACX,QAAQ,CAER;IAEJ;GACF;EACF,UAAU;GACR,OAAO,YAAY;EACrB;CACF;CAMA,MAAM,UACJ,UACA,SACA,YACqB;EACrB,QAAQ,QAAQ,eAAe;EAC/B,MAAM,mBAAmB,KAAK,iBAAiB,OAAO;EACtD,MAAM,QAAQ,gCAAgC,QAAQ;EAEtD,IAAI,iBAAiB,QAAQ;GAC3B,MAAM,SAAS,KAAK,sBAAsB,UAAU,SAAS,UAAU;GACvE,IAAI;GAEJ,WAAW,MAAM,SAAS,QAAQ;IAChC,MAAM,QAAQ,oBAAoB;KAChC,GAAG,MAAM;KACT,GAAG,MAAM,QAAQ;IACnB;IACA,aAAa,YAAY,OAAO,KAAK,KAAK;GAC5C;GAEA,OAAO;IACL,aAAa,aAAa,CAAC,UAAU,IAAI,CAAC;IAC1C,WAAW,EACT,sBAAsB,YAAY,QAAA,EAC9B,eACN;GACF;EACF;EAEA,MAAM,WAAW,MAAM,KAAK,aAAa;GACvC;GACA,GAAG;GACH,QAAQ;EACV,CAAyC;EAEzC,MAAM,YAAY,2BAA2B,QAAQ;EAGrD,OAAO;GACL,aAAa,CACX;IACE,MALO,sBAAsB,SAAS,MAKnC;IACH,SAAS;GACX,CACF;GACA,WAAW;IACT,IAAI,SAAS;IACb,qBAAqB,SAAS,QAC1B;KACE,cAAc,SAAS,MAAM;KAC7B,kBAAkB,SAAS,MAAM;KACjC,aAAa,SAAS,MAAM;IAC9B,IACA,KAAA;GACN;EACF;CACF;CAEA,OAAO,uBACL,UACA,SACA,aACsC;EACtC,MAAM,mBAAmB,KAAK,iBAAiB,OAAO;EACtD,MAAM,QAAQ,gCAAgC,QAAQ;EAEtD,MAAM,iBAAiB,MAAM,KAAK,aAAa;GAC7C;GACA,GAAG;GACH,QAAQ;EACV,CAAsC;EAEtC,MAAM,oBAAoB,QAAQ,eAAe;EAEjD,MAAM,kBAAkB,iBACtB,QACA,QACA;GACA,WAAW,MAAM,SAAS,QAAQ;IAChC,IAAI,QAAQ,SACV;IAEF,MAAM;GACR;EACF;EAEA,OAAO,0BACL,gBAAgB,gBAAgB,QAAQ,MAAM,GAC9C,EAAE,aAAa,kBAAkB,CACnC;CACF;CAEA,OAAO,sBACL,UACA,SACA,YACqC;EACrC,MAAM,mBAAmB,KAAK,iBAAiB,OAAO;EACtD,MAAM,QAAQ,gCAAgC,QAAQ;EAEtD,MAAM,iBAAiB,MAAM,KAAK,aAAa;GAC7C;GACA,GAAG;GACH,QAAQ;EACV,CAAsC;EAEtC,WAAW,MAAM,SAAS,gBAAgB;GACxC,IAAI,QAAQ,QAAQ,SAClB;GAEF,MAAM,QAAQ,0BAA0B,KAAK;GAC7C,IAAI,OAAO;IACT,MAAM;IACN,MAAM,YAAY,kBAAkB,MAAM,QAAQ,IAAI;KACpD,QAAQ;KACR,YAAY;IACd,CAAC;GACH;EACF;CACF;AACF"}
|
package/dist/live_search.d.cts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Web search source configuration for xAI Live Search.
|
|
4
4
|
* Corresponds to a `{"type": "web", ...}` entry in `search_parameters.sources`.
|
|
5
5
|
*/
|
|
6
|
-
interface XAIWebSource {
|
|
6
|
+
export interface XAIWebSource {
|
|
7
7
|
type: "web";
|
|
8
8
|
/**
|
|
9
9
|
* Optional ISO alpha-2 country code used to bias results
|
|
@@ -29,7 +29,7 @@ interface XAIWebSource {
|
|
|
29
29
|
* News search source configuration for xAI Live Search.
|
|
30
30
|
* Corresponds to a `{"type": "news", ...}` entry in `search_parameters.sources`.
|
|
31
31
|
*/
|
|
32
|
-
interface XAINewsSource {
|
|
32
|
+
export interface XAINewsSource {
|
|
33
33
|
type: "news";
|
|
34
34
|
/**
|
|
35
35
|
* Optional ISO alpha-2 country code used to bias results
|
|
@@ -50,7 +50,7 @@ interface XAINewsSource {
|
|
|
50
50
|
* X (formerly Twitter) search source configuration for xAI Live Search.
|
|
51
51
|
* Corresponds to a `{"type": "x", ...}` entry in `search_parameters.sources`.
|
|
52
52
|
*/
|
|
53
|
-
interface XAIXSource {
|
|
53
|
+
export interface XAIXSource {
|
|
54
54
|
type: "x";
|
|
55
55
|
/**
|
|
56
56
|
* X handles that should be explicitly included in the search.
|
|
@@ -75,7 +75,7 @@ interface XAIXSource {
|
|
|
75
75
|
* RSS feed search source configuration for xAI Live Search.
|
|
76
76
|
* Corresponds to a `{"type": "rss", ...}` entry in `search_parameters.sources`.
|
|
77
77
|
*/
|
|
78
|
-
interface XAIRssSource {
|
|
78
|
+
export interface XAIRssSource {
|
|
79
79
|
type: "rss";
|
|
80
80
|
/**
|
|
81
81
|
* Links to RSS feeds to be used as a data source.
|
|
@@ -83,7 +83,7 @@ interface XAIRssSource {
|
|
|
83
83
|
*/
|
|
84
84
|
links: string[];
|
|
85
85
|
}
|
|
86
|
-
type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
|
|
86
|
+
export type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
|
|
87
87
|
/**
|
|
88
88
|
* Search parameters for xAI's Live Search API.
|
|
89
89
|
* Controls how the model searches for and retrieves real-time information.
|
|
@@ -92,7 +92,7 @@ type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
|
|
|
92
92
|
* the agentic tool calling approach. Consider using `tools: [{ type: "live_search" }]`
|
|
93
93
|
* for future compatibility.
|
|
94
94
|
*/
|
|
95
|
-
interface XAISearchParameters {
|
|
95
|
+
export interface XAISearchParameters {
|
|
96
96
|
/**
|
|
97
97
|
* Controls when the model should perform a search.
|
|
98
98
|
* - "auto": Let the model decide when to search (default)
|
|
@@ -132,7 +132,7 @@ interface XAISearchParameters {
|
|
|
132
132
|
/**
|
|
133
133
|
* Concrete payload shape sent as `search_parameters` to the xAI API.
|
|
134
134
|
*/
|
|
135
|
-
interface XAISearchParametersPayload {
|
|
135
|
+
export interface XAISearchParametersPayload {
|
|
136
136
|
mode: "auto" | "on" | "off";
|
|
137
137
|
max_search_results?: number;
|
|
138
138
|
from_date?: string;
|
|
@@ -141,5 +141,4 @@ interface XAISearchParametersPayload {
|
|
|
141
141
|
sources?: XAISearchSource[];
|
|
142
142
|
}
|
|
143
143
|
//#endregion
|
|
144
|
-
export { XAINewsSource, XAIRssSource, XAISearchParameters, XAISearchParametersPayload, XAISearchSource, XAIWebSource, XAIXSource };
|
|
145
144
|
//# sourceMappingURL=live_search.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live_search.d.cts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"live_search.d.cts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;iBAIiB;EACf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;YAGU,kBACR,eACA,gBACA,aACA;;;;;;;;;iBAUa;;;;;;;EAOf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;;;EAQA,UAAU;;;;;iBAMK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU"}
|
package/dist/live_search.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Web search source configuration for xAI Live Search.
|
|
4
4
|
* Corresponds to a `{"type": "web", ...}` entry in `search_parameters.sources`.
|
|
5
5
|
*/
|
|
6
|
-
interface XAIWebSource {
|
|
6
|
+
export interface XAIWebSource {
|
|
7
7
|
type: "web";
|
|
8
8
|
/**
|
|
9
9
|
* Optional ISO alpha-2 country code used to bias results
|
|
@@ -29,7 +29,7 @@ interface XAIWebSource {
|
|
|
29
29
|
* News search source configuration for xAI Live Search.
|
|
30
30
|
* Corresponds to a `{"type": "news", ...}` entry in `search_parameters.sources`.
|
|
31
31
|
*/
|
|
32
|
-
interface XAINewsSource {
|
|
32
|
+
export interface XAINewsSource {
|
|
33
33
|
type: "news";
|
|
34
34
|
/**
|
|
35
35
|
* Optional ISO alpha-2 country code used to bias results
|
|
@@ -50,7 +50,7 @@ interface XAINewsSource {
|
|
|
50
50
|
* X (formerly Twitter) search source configuration for xAI Live Search.
|
|
51
51
|
* Corresponds to a `{"type": "x", ...}` entry in `search_parameters.sources`.
|
|
52
52
|
*/
|
|
53
|
-
interface XAIXSource {
|
|
53
|
+
export interface XAIXSource {
|
|
54
54
|
type: "x";
|
|
55
55
|
/**
|
|
56
56
|
* X handles that should be explicitly included in the search.
|
|
@@ -75,7 +75,7 @@ interface XAIXSource {
|
|
|
75
75
|
* RSS feed search source configuration for xAI Live Search.
|
|
76
76
|
* Corresponds to a `{"type": "rss", ...}` entry in `search_parameters.sources`.
|
|
77
77
|
*/
|
|
78
|
-
interface XAIRssSource {
|
|
78
|
+
export interface XAIRssSource {
|
|
79
79
|
type: "rss";
|
|
80
80
|
/**
|
|
81
81
|
* Links to RSS feeds to be used as a data source.
|
|
@@ -83,7 +83,7 @@ interface XAIRssSource {
|
|
|
83
83
|
*/
|
|
84
84
|
links: string[];
|
|
85
85
|
}
|
|
86
|
-
type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
|
|
86
|
+
export type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
|
|
87
87
|
/**
|
|
88
88
|
* Search parameters for xAI's Live Search API.
|
|
89
89
|
* Controls how the model searches for and retrieves real-time information.
|
|
@@ -92,7 +92,7 @@ type XAISearchSource = XAIWebSource | XAINewsSource | XAIXSource | XAIRssSource;
|
|
|
92
92
|
* the agentic tool calling approach. Consider using `tools: [{ type: "live_search" }]`
|
|
93
93
|
* for future compatibility.
|
|
94
94
|
*/
|
|
95
|
-
interface XAISearchParameters {
|
|
95
|
+
export interface XAISearchParameters {
|
|
96
96
|
/**
|
|
97
97
|
* Controls when the model should perform a search.
|
|
98
98
|
* - "auto": Let the model decide when to search (default)
|
|
@@ -132,7 +132,7 @@ interface XAISearchParameters {
|
|
|
132
132
|
/**
|
|
133
133
|
* Concrete payload shape sent as `search_parameters` to the xAI API.
|
|
134
134
|
*/
|
|
135
|
-
interface XAISearchParametersPayload {
|
|
135
|
+
export interface XAISearchParametersPayload {
|
|
136
136
|
mode: "auto" | "on" | "off";
|
|
137
137
|
max_search_results?: number;
|
|
138
138
|
from_date?: string;
|
|
@@ -141,5 +141,4 @@ interface XAISearchParametersPayload {
|
|
|
141
141
|
sources?: XAISearchSource[];
|
|
142
142
|
}
|
|
143
143
|
//#endregion
|
|
144
|
-
export { XAINewsSource, XAIRssSource, XAISearchParameters, XAISearchParametersPayload, XAISearchSource, XAIWebSource, XAIXSource };
|
|
145
144
|
//# sourceMappingURL=live_search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live_search.d.ts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"live_search.d.ts","names":[],"sources":["../src/live_search.ts"],"mappings":";;;;;iBAIiB;EACf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;;;;EAKA;;;;EAIA;;;;EAIA;;;;;;iBAOe;EACf;;;;;EAKA;;YAGU,kBACR,eACA,gBACA,aACA;;;;;;;;;iBAUa;;;;;;;EAOf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;;;EAQA,UAAU;;;;;iBAMK;EACf;EACA;EACA;EACA;EACA;EACA,UAAU"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* xAI Code Execution tool type constant.
|
|
4
4
|
* Note: The Responses API uses "code_interpreter" as the type name.
|
|
5
5
|
*/
|
|
6
|
-
declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
|
|
6
|
+
export declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
|
|
7
7
|
/**
|
|
8
8
|
* xAI's built-in code execution tool interface.
|
|
9
9
|
* Enables the model to write and execute Python code in real-time.
|
|
@@ -15,7 +15,7 @@ declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
|
|
|
15
15
|
* - Scientific computing
|
|
16
16
|
* - Code generation and testing
|
|
17
17
|
*/
|
|
18
|
-
interface XAICodeExecutionTool {
|
|
18
|
+
export interface XAICodeExecutionTool {
|
|
19
19
|
/**
|
|
20
20
|
* The type of the tool. Must be "code_interpreter".
|
|
21
21
|
*/
|
|
@@ -58,7 +58,6 @@ interface XAICodeExecutionTool {
|
|
|
58
58
|
* );
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
declare function xaiCodeExecution(): XAICodeExecutionTool;
|
|
61
|
+
export declare function xaiCodeExecution(): XAICodeExecutionTool;
|
|
62
62
|
//#endregion
|
|
63
|
-
export { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution };
|
|
64
63
|
//# sourceMappingURL=code_execution.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code_execution.d.cts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"code_execution.d.cts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;iBAaI;;;;EAIf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAwCC,oBAAoB"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* xAI Code Execution tool type constant.
|
|
4
4
|
* Note: The Responses API uses "code_interpreter" as the type name.
|
|
5
5
|
*/
|
|
6
|
-
declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
|
|
6
|
+
export declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
|
|
7
7
|
/**
|
|
8
8
|
* xAI's built-in code execution tool interface.
|
|
9
9
|
* Enables the model to write and execute Python code in real-time.
|
|
@@ -15,7 +15,7 @@ declare const XAI_CODE_EXECUTION_TOOL_TYPE = "code_interpreter";
|
|
|
15
15
|
* - Scientific computing
|
|
16
16
|
* - Code generation and testing
|
|
17
17
|
*/
|
|
18
|
-
interface XAICodeExecutionTool {
|
|
18
|
+
export interface XAICodeExecutionTool {
|
|
19
19
|
/**
|
|
20
20
|
* The type of the tool. Must be "code_interpreter".
|
|
21
21
|
*/
|
|
@@ -58,7 +58,6 @@ interface XAICodeExecutionTool {
|
|
|
58
58
|
* );
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
declare function xaiCodeExecution(): XAICodeExecutionTool;
|
|
61
|
+
export declare function xaiCodeExecution(): XAICodeExecutionTool;
|
|
62
62
|
//#endregion
|
|
63
|
-
export { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution };
|
|
64
63
|
//# sourceMappingURL=code_execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code_execution.d.ts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"code_execution.d.ts","names":[],"sources":["../../src/tools/code_execution.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;iBAaI;;;;EAIf,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAwCC,oBAAoB"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* xAI Collections Search tool type constant.
|
|
4
4
|
* Note: The Responses API uses "file_search" as the type name.
|
|
5
5
|
*/
|
|
6
|
-
declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
|
|
6
|
+
export declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
|
|
7
7
|
/**
|
|
8
8
|
* xAI's built-in collections search tool interface.
|
|
9
9
|
* Enables the model to search through uploaded knowledge bases (collections)
|
|
@@ -16,7 +16,7 @@ declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
|
|
|
16
16
|
* - RAG (Retrieval-Augmented Generation) applications
|
|
17
17
|
* - Enterprise knowledge base queries
|
|
18
18
|
*/
|
|
19
|
-
interface XAICollectionsSearchTool {
|
|
19
|
+
export interface XAICollectionsSearchTool {
|
|
20
20
|
/**
|
|
21
21
|
* The type of the tool. Must be "file_search".
|
|
22
22
|
*/
|
|
@@ -32,7 +32,7 @@ interface XAICollectionsSearchTool {
|
|
|
32
32
|
* All fields are camel-cased for the TypeScript API and are mapped to the
|
|
33
33
|
* corresponding snake_case fields in the API request.
|
|
34
34
|
*/
|
|
35
|
-
interface XAICollectionsSearchToolOptions {
|
|
35
|
+
export interface XAICollectionsSearchToolOptions {
|
|
36
36
|
/**
|
|
37
37
|
* List of vector store (collection) IDs to search.
|
|
38
38
|
* These are the IDs of collections created via the xAI Collections API.
|
|
@@ -84,7 +84,6 @@ interface XAICollectionsSearchToolOptions {
|
|
|
84
84
|
* );
|
|
85
85
|
* ```
|
|
86
86
|
*/
|
|
87
|
-
declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
|
|
87
|
+
export declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
|
|
88
88
|
//#endregion
|
|
89
|
-
export { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch };
|
|
90
89
|
//# sourceMappingURL=collections_search.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections_search.d.cts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"collections_search.d.cts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;;iBAcI;;;;EAIf,aAAa;;;;;EAKb;;;;;;;iBAQe;;;;;;;EAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8Cc,qBACd,UAAS,kCACR"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* xAI Collections Search tool type constant.
|
|
4
4
|
* Note: The Responses API uses "file_search" as the type name.
|
|
5
5
|
*/
|
|
6
|
-
declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
|
|
6
|
+
export declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
|
|
7
7
|
/**
|
|
8
8
|
* xAI's built-in collections search tool interface.
|
|
9
9
|
* Enables the model to search through uploaded knowledge bases (collections)
|
|
@@ -16,7 +16,7 @@ declare const XAI_COLLECTIONS_SEARCH_TOOL_TYPE = "file_search";
|
|
|
16
16
|
* - RAG (Retrieval-Augmented Generation) applications
|
|
17
17
|
* - Enterprise knowledge base queries
|
|
18
18
|
*/
|
|
19
|
-
interface XAICollectionsSearchTool {
|
|
19
|
+
export interface XAICollectionsSearchTool {
|
|
20
20
|
/**
|
|
21
21
|
* The type of the tool. Must be "file_search".
|
|
22
22
|
*/
|
|
@@ -32,7 +32,7 @@ interface XAICollectionsSearchTool {
|
|
|
32
32
|
* All fields are camel-cased for the TypeScript API and are mapped to the
|
|
33
33
|
* corresponding snake_case fields in the API request.
|
|
34
34
|
*/
|
|
35
|
-
interface XAICollectionsSearchToolOptions {
|
|
35
|
+
export interface XAICollectionsSearchToolOptions {
|
|
36
36
|
/**
|
|
37
37
|
* List of vector store (collection) IDs to search.
|
|
38
38
|
* These are the IDs of collections created via the xAI Collections API.
|
|
@@ -84,7 +84,6 @@ interface XAICollectionsSearchToolOptions {
|
|
|
84
84
|
* );
|
|
85
85
|
* ```
|
|
86
86
|
*/
|
|
87
|
-
declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
|
|
87
|
+
export declare function xaiCollectionsSearch(options?: XAICollectionsSearchToolOptions): XAICollectionsSearchTool;
|
|
88
88
|
//#endregion
|
|
89
|
-
export { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch };
|
|
90
89
|
//# sourceMappingURL=collections_search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections_search.d.ts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"collections_search.d.ts","names":[],"sources":["../../src/tools/collections_search.ts"],"mappings":";;;;;qBAIa;;;;;;;;;;;;;iBAcI;;;;EAIf,aAAa;;;;;EAKb;;;;;;;iBAQe;;;;;;;EAOf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8Cc,qBACd,UAAS,kCACR"}
|
package/dist/tools/index.d.cts
CHANGED
|
@@ -4,7 +4,7 @@ import { XAIXSearchTool, XAIXSearchToolOptions, XAI_X_SEARCH_TOOL_TYPE, xaiXSear
|
|
|
4
4
|
import { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution } from "./code_execution.cjs";
|
|
5
5
|
import { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch } from "./collections_search.cjs";
|
|
6
6
|
//#region src/tools/index.d.ts
|
|
7
|
-
declare const tools: {
|
|
7
|
+
export declare const tools: {
|
|
8
8
|
/** @deprecated Use xaiWebSearch and xaiXSearch instead */
|
|
9
9
|
xaiLiveSearch: typeof xaiLiveSearch;
|
|
10
10
|
xaiWebSearch: typeof xaiWebSearch;
|
|
@@ -13,5 +13,4 @@ declare const tools: {
|
|
|
13
13
|
xaiCollectionsSearch: typeof xaiCollectionsSearch;
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
|
-
export { tools };
|
|
17
16
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;qBAMa"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { XAIXSearchTool, XAIXSearchToolOptions, XAI_X_SEARCH_TOOL_TYPE, xaiXSear
|
|
|
4
4
|
import { XAICodeExecutionTool, XAI_CODE_EXECUTION_TOOL_TYPE, xaiCodeExecution } from "./code_execution.js";
|
|
5
5
|
import { XAICollectionsSearchTool, XAICollectionsSearchToolOptions, XAI_COLLECTIONS_SEARCH_TOOL_TYPE, xaiCollectionsSearch } from "./collections_search.js";
|
|
6
6
|
//#region src/tools/index.d.ts
|
|
7
|
-
declare const tools: {
|
|
7
|
+
export declare const tools: {
|
|
8
8
|
/** @deprecated Use xaiWebSearch and xaiXSearch instead */
|
|
9
9
|
xaiLiveSearch: typeof xaiLiveSearch;
|
|
10
10
|
xaiWebSearch: typeof xaiWebSearch;
|
|
@@ -13,5 +13,4 @@ declare const tools: {
|
|
|
13
13
|
xaiCollectionsSearch: typeof xaiCollectionsSearch;
|
|
14
14
|
};
|
|
15
15
|
//#endregion
|
|
16
|
-
export { tools };
|
|
17
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/tools/index.ts"],"mappings":";;;;;;qBAMa"}
|