UNPKG

langsmith

Version:

Client library to connect to the LangSmith Observability and Evaluation Platform.

229 lines (228 loc) 18.3 kB
import type { RequestInit, RequestInfo } from './internal/builtin-types.js'; import type { PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from './internal/types.js'; export type { Logger, LogLevel } from './internal/utils/log.js'; import * as Opts from './internal/request-options.js'; import * as Errors from './core/error.js'; import * as Pagination from './core/pagination.js'; import { type CursorPaginationParams, CursorPaginationResponse, type ItemsCursorGetPaginationParams, ItemsCursorGetPaginationResponse, type ItemsCursorPostPaginationParams, ItemsCursorPostPaginationResponse, type OffsetPaginationCommitsParams, OffsetPaginationCommitsResponse, type OffsetPaginationInsightsClusteringJobsParams, OffsetPaginationInsightsClusteringJobsResponse, type OffsetPaginationIssuesParams, OffsetPaginationIssuesResponse, type OffsetPaginationOnlineEvaluatorsParams, OffsetPaginationOnlineEvaluatorsResponse, type OffsetPaginationReposParams, OffsetPaginationReposResponse, type OffsetPaginationTopLevelArrayParams, OffsetPaginationTopLevelArrayResponse } from './core/pagination.js'; import * as Uploads from './core/uploads.js'; import * as API from './resources/index.js'; import { APIPromise } from './core/api-promise.js'; import { Info, InfoListResponse } from './resources/info.js'; import { Issue, IssueListParams, Issues, IssuesOffsetPaginationIssues } from './resources/issues.js'; import { BulkDeleteEvaluatorFailedItem, BulkDeleteEvaluatorsResponse, CreateOnlineCodeEvaluatorRequest, CreateOnlineEvaluatorRequest, CreateOnlineEvaluatorResponse, CreateOnlineLlmEvaluatorRequest, GetOnlineEvaluatorSpendResponse, OnlineCodeEvaluator, OnlineEvaluator, OnlineEvaluatorBulkDeleteParams, OnlineEvaluatorCreateParams, OnlineEvaluatorDeleteParams, OnlineEvaluatorListParams, OnlineEvaluatorRunRule, OnlineEvaluatorSpendDay, OnlineEvaluatorSpendGroup, OnlineEvaluatorSpendParams, OnlineEvaluatorType, OnlineEvaluatorUpdateParams, OnlineEvaluators, OnlineEvaluatorsOffsetPaginationOnlineEvaluators, OnlineLlmEvaluator, OnlineSpendLimit, UpdateOnlineCodeEvaluatorRequest, UpdateOnlineEvaluatorRequest, UpdateOnlineEvaluatorResponse, UpdateOnlineLlmEvaluatorRequest } from './resources/online-evaluators.js'; import { ResponseBodyForRunsGenerateQuery, Run, RunIngest, RunQueryParams, RunQueryV2Params, RunRetrieveParams, RunRetrieveV2Params, RunSchema, RunStatsQueryParams, RunTypeEnum, Runs, RunsFilterDataSourceTypeEnum, RunsItemsCursorPostPagination } from './resources/runs.js'; import { ThreadListItem, ThreadListItemsItemsCursorPostPagination, ThreadListTracesParams, ThreadQueryParams, ThreadStatsParams, ThreadStatsResponse, ThreadTraceListItem, ThreadTraceListItemsItemsCursorGetPagination, Threads } from './resources/threads.js'; import { Trace, TraceAggregates, TraceListRunsParams, TraceListRunsResponse, TraceQueryParams, Traces, TracesItemsCursorPostPagination } from './resources/traces.js'; import { DataType, Dataset, DatasetTransformation, DatasetVersion, Datasets, FeedbackCreateCoreSchema, Missing, SortByDatasetColumn } from './resources/datasets/datasets.js'; import { SandboxListResponse, SandboxResponse, SandboxStatusResponse, Sandboxes, ServiceURLResponse, SnapshotListResponse, SnapshotResponse } from './resources/sandboxes/sandboxes.js'; import { type Fetch } from './internal/builtin-types.js'; import { HeadersLike, NullableHeaders } from './internal/headers.js'; import { FinalRequestOptions, RequestOptions } from './internal/request-options.js'; import { type LogLevel, type Logger } from './internal/utils/log.js'; export interface ClientOptions { /** * Defaults to process.env['LANGSMITH_API_KEY']. */ apiKey?: string | null | undefined; /** * Defaults to process.env['LANGSMITH_TENANT_ID']. */ tenantID?: string | null | undefined; /** * Override the default base URL for the API, e.g., "https://api.example.com/v2/" * * Defaults to process.env['LANGCHAIN_BASE_URL']. */ baseURL?: string | null | undefined; /** * The maximum amount of time (in milliseconds) that the client should wait for a response * from the server before timing out a single request. * * Note that request timeouts are retried by default, so in a worst-case scenario you may wait * much longer than this timeout before the promise succeeds or fails. * * @unit milliseconds */ timeout?: number | undefined; /** * Additional `RequestInit` options to be passed to `fetch` calls. * Properties will be overridden by per-request `fetchOptions`. */ fetchOptions?: MergedRequestInit | undefined; /** * Specify a custom `fetch` function implementation. * * If not provided, we expect that `fetch` is defined globally. */ fetch?: Fetch | undefined; /** * The maximum number of times that the client will retry a request in case of a * temporary failure, like a network error or a 5XX error from the server. * * @default 2 */ maxRetries?: number | undefined; /** * Default headers to include with every request to the API. * * These can be removed in individual requests by explicitly setting the * header to `null` in request options. */ defaultHeaders?: HeadersLike | undefined; /** * Default query parameters to include with every request to the API. * * These can be removed in individual requests by explicitly setting the * param to `undefined` in request options. */ defaultQuery?: Record<string, string | undefined> | undefined; /** * Set the log level. * * Defaults to process.env['LANGCHAIN_LOG'] or 'warn' if it isn't set. */ logLevel?: LogLevel | undefined; /** * Set the logger. * * Defaults to globalThis.console. */ logger?: Logger | undefined; } /** * API Client for interfacing with the LangChain API. */ export declare class Langsmith { #private; apiKey: string | null; tenantID: string | null; baseURL: string; maxRetries: number; timeout: number; logger: Logger; logLevel: LogLevel | undefined; fetchOptions: MergedRequestInit | undefined; private fetch; protected idempotencyHeader?: string; private _options; /** * API Client for interfacing with the LangChain API. * * @param {string | null | undefined} [opts.apiKey=process.env['LANGSMITH_API_KEY'] ?? null] * @param {string | null | undefined} [opts.tenantID=process.env['LANGSMITH_TENANT_ID'] ?? null] * @param {string} [opts.baseURL=process.env['LANGCHAIN_BASE_URL'] ?? https://api.smith.langchain.com/] - Override the default base URL for the API. * @param {number} [opts.timeout=1.5 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out. * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls. * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation. * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request. * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API. * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API. */ constructor({ baseURL, apiKey, tenantID, ...opts }?: ClientOptions); /** * Create a new client instance re-using the same options given to the current client with optional overriding. */ withOptions(options: Partial<ClientOptions>): this; protected defaultQuery(): Record<string, string | undefined> | undefined; protected validateHeaders({ values, nulls }: NullableHeaders): void; protected authHeaders(opts: FinalRequestOptions): Promise<NullableHeaders | undefined>; protected apiKeyAuth(opts: FinalRequestOptions): Promise<NullableHeaders | undefined>; protected tenantIDAuth(opts: FinalRequestOptions): Promise<NullableHeaders | undefined>; protected stringifyQuery(query: object | Record<string, unknown>): string; private getUserAgent; protected defaultIdempotencyKey(): string; protected makeStatusError(status: number, error: Object, message: string | undefined, headers: Headers): Errors.APIError; buildURL(path: string, query: Record<string, unknown> | null | undefined, defaultBaseURL?: string | undefined): string; /** * Used as a callback for mutating the given `FinalRequestOptions` object. */ protected prepareOptions(options: FinalRequestOptions): Promise<void>; /** * Used as a callback for mutating the given `RequestInit` object. * * This is useful for cases where you want to add certain headers based off of * the request properties, e.g. `method` or `url`. */ protected prepareRequest(request: RequestInit, { url, options }: { url: string; options: FinalRequestOptions; }): Promise<void>; get<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp>; post<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp>; patch<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp>; put<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp>; delete<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp>; private methodRequest; request<Rsp>(options: PromiseOrValue<FinalRequestOptions>, remainingRetries?: number | null): APIPromise<Rsp>; private makeRequest; getAPIList<Item, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(path: string, Page: new (...args: any[]) => PageClass, opts?: PromiseOrValue<RequestOptions>): Pagination.PagePromise<PageClass, Item>; requestAPIList<Item = unknown, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(Page: new (...args: ConstructorParameters<typeof Pagination.AbstractPage>) => PageClass, options: PromiseOrValue<FinalRequestOptions>): Pagination.PagePromise<PageClass, Item>; fetchWithTimeout(url: RequestInfo, init: RequestInit | undefined, ms: number, controller: AbortController): Promise<Response>; private shouldRetry; private retryRequest; private calculateDefaultRetryTimeoutMillis; buildRequest(inputOptions: FinalRequestOptions, { retryCount }?: { retryCount?: number; }): Promise<{ req: FinalizedRequestInit; url: string; timeout: number; }>; private buildHeaders; private _makeAbort; private buildBody; static Langsmith: typeof Langsmith; static DEFAULT_TIMEOUT: number; static LangsmithError: typeof Errors.LangsmithError; static APIError: typeof Errors.APIError; static APIConnectionError: typeof Errors.APIConnectionError; static APIConnectionTimeoutError: typeof Errors.APIConnectionTimeoutError; static APIUserAbortError: typeof Errors.APIUserAbortError; static NotFoundError: typeof Errors.NotFoundError; static ConflictError: typeof Errors.ConflictError; static RateLimitError: typeof Errors.RateLimitError; static BadRequestError: typeof Errors.BadRequestError; static AuthenticationError: typeof Errors.AuthenticationError; static InternalServerError: typeof Errors.InternalServerError; static PermissionDeniedError: typeof Errors.PermissionDeniedError; static UnprocessableEntityError: typeof Errors.UnprocessableEntityError; static toFile: typeof Uploads.toFile; datasets: API.Datasets; runs: API.Runs; threads: API.Threads; traces: API.Traces; onlineEvaluators: API.OnlineEvaluators; info: API.Info; issues: API.Issues; sandboxes: API.Sandboxes; } export declare namespace Langsmith { export type RequestOptions = Opts.RequestOptions; export import OffsetPaginationTopLevelArray = Pagination.OffsetPaginationTopLevelArray; export { type OffsetPaginationTopLevelArrayParams as OffsetPaginationTopLevelArrayParams, type OffsetPaginationTopLevelArrayResponse as OffsetPaginationTopLevelArrayResponse, }; export import OffsetPaginationIssues = Pagination.OffsetPaginationIssues; export { type OffsetPaginationIssuesParams as OffsetPaginationIssuesParams, type OffsetPaginationIssuesResponse as OffsetPaginationIssuesResponse, }; export import OffsetPaginationRepos = Pagination.OffsetPaginationRepos; export { type OffsetPaginationReposParams as OffsetPaginationReposParams, type OffsetPaginationReposResponse as OffsetPaginationReposResponse, }; export import OffsetPaginationCommits = Pagination.OffsetPaginationCommits; export { type OffsetPaginationCommitsParams as OffsetPaginationCommitsParams, type OffsetPaginationCommitsResponse as OffsetPaginationCommitsResponse, }; export import OffsetPaginationOnlineEvaluators = Pagination.OffsetPaginationOnlineEvaluators; export { type OffsetPaginationOnlineEvaluatorsParams as OffsetPaginationOnlineEvaluatorsParams, type OffsetPaginationOnlineEvaluatorsResponse as OffsetPaginationOnlineEvaluatorsResponse, }; export import OffsetPaginationInsightsClusteringJobs = Pagination.OffsetPaginationInsightsClusteringJobs; export { type OffsetPaginationInsightsClusteringJobsParams as OffsetPaginationInsightsClusteringJobsParams, type OffsetPaginationInsightsClusteringJobsResponse as OffsetPaginationInsightsClusteringJobsResponse, }; export import CursorPagination = Pagination.CursorPagination; export { type CursorPaginationParams as CursorPaginationParams, type CursorPaginationResponse as CursorPaginationResponse, }; export import ItemsCursorPostPagination = Pagination.ItemsCursorPostPagination; export { type ItemsCursorPostPaginationParams as ItemsCursorPostPaginationParams, type ItemsCursorPostPaginationResponse as ItemsCursorPostPaginationResponse, }; export import ItemsCursorGetPagination = Pagination.ItemsCursorGetPagination; export { type ItemsCursorGetPaginationParams as ItemsCursorGetPaginationParams, type ItemsCursorGetPaginationResponse as ItemsCursorGetPaginationResponse, }; export { Datasets as Datasets, type DataType as DataType, type Dataset as Dataset, type DatasetTransformation as DatasetTransformation, type DatasetVersion as DatasetVersion, type FeedbackCreateCoreSchema as FeedbackCreateCoreSchema, type Missing as Missing, type SortByDatasetColumn as SortByDatasetColumn, }; export { Runs as Runs, type ResponseBodyForRunsGenerateQuery as ResponseBodyForRunsGenerateQuery, type Run as Run, type RunIngest as RunIngest, type RunSchema as RunSchema, type RunStatsQueryParams as RunStatsQueryParams, type RunTypeEnum as RunTypeEnum, type RunsFilterDataSourceTypeEnum as RunsFilterDataSourceTypeEnum, type RunsItemsCursorPostPagination as RunsItemsCursorPostPagination, type RunQueryV2Params as RunQueryV2Params, type RunRetrieveV2Params as RunRetrieveV2Params, type RunRetrieveParams as RunRetrieveParams, type RunQueryParams as RunQueryParams, }; export { Threads as Threads, type ThreadListItem as ThreadListItem, type ThreadTraceListItem as ThreadTraceListItem, type ThreadStatsResponse as ThreadStatsResponse, type ThreadTraceListItemsItemsCursorGetPagination as ThreadTraceListItemsItemsCursorGetPagination, type ThreadListItemsItemsCursorPostPagination as ThreadListItemsItemsCursorPostPagination, type ThreadListTracesParams as ThreadListTracesParams, type ThreadQueryParams as ThreadQueryParams, type ThreadStatsParams as ThreadStatsParams, }; export { Traces as Traces, type Trace as Trace, type TraceAggregates as TraceAggregates, type TraceListRunsResponse as TraceListRunsResponse, type TracesItemsCursorPostPagination as TracesItemsCursorPostPagination, type TraceListRunsParams as TraceListRunsParams, type TraceQueryParams as TraceQueryParams, }; export { OnlineEvaluators as OnlineEvaluators, type BulkDeleteEvaluatorFailedItem as BulkDeleteEvaluatorFailedItem, type BulkDeleteEvaluatorsResponse as BulkDeleteEvaluatorsResponse, type CreateOnlineCodeEvaluatorRequest as CreateOnlineCodeEvaluatorRequest, type CreateOnlineEvaluatorRequest as CreateOnlineEvaluatorRequest, type CreateOnlineEvaluatorResponse as CreateOnlineEvaluatorResponse, type CreateOnlineLlmEvaluatorRequest as CreateOnlineLlmEvaluatorRequest, type GetOnlineEvaluatorSpendResponse as GetOnlineEvaluatorSpendResponse, type OnlineCodeEvaluator as OnlineCodeEvaluator, type OnlineEvaluator as OnlineEvaluator, type OnlineEvaluatorRunRule as OnlineEvaluatorRunRule, type OnlineEvaluatorSpendDay as OnlineEvaluatorSpendDay, type OnlineEvaluatorSpendGroup as OnlineEvaluatorSpendGroup, type OnlineEvaluatorType as OnlineEvaluatorType, type OnlineLlmEvaluator as OnlineLlmEvaluator, type OnlineSpendLimit as OnlineSpendLimit, type UpdateOnlineCodeEvaluatorRequest as UpdateOnlineCodeEvaluatorRequest, type UpdateOnlineEvaluatorRequest as UpdateOnlineEvaluatorRequest, type UpdateOnlineEvaluatorResponse as UpdateOnlineEvaluatorResponse, type UpdateOnlineLlmEvaluatorRequest as UpdateOnlineLlmEvaluatorRequest, type OnlineEvaluatorsOffsetPaginationOnlineEvaluators as OnlineEvaluatorsOffsetPaginationOnlineEvaluators, type OnlineEvaluatorCreateParams as OnlineEvaluatorCreateParams, type OnlineEvaluatorUpdateParams as OnlineEvaluatorUpdateParams, type OnlineEvaluatorListParams as OnlineEvaluatorListParams, type OnlineEvaluatorDeleteParams as OnlineEvaluatorDeleteParams, type OnlineEvaluatorBulkDeleteParams as OnlineEvaluatorBulkDeleteParams, type OnlineEvaluatorSpendParams as OnlineEvaluatorSpendParams, }; export { Info as Info, type InfoListResponse as InfoListResponse }; export { Issues as Issues, type Issue as Issue, type IssuesOffsetPaginationIssues as IssuesOffsetPaginationIssues, type IssueListParams as IssueListParams, }; export { Sandboxes as Sandboxes, type SandboxListResponse as SandboxListResponse, type SandboxResponse as SandboxResponse, type SandboxStatusResponse as SandboxStatusResponse, type ServiceURLResponse as ServiceURLResponse, type SnapshotListResponse as SnapshotListResponse, type SnapshotResponse as SnapshotResponse, }; }