UNPKG

@langchain/community

Version:
1 lines 6.2 kB
{"version":3,"file":"writer.cjs","names":["LLM","WriterClient"],"sources":["../../src/llms/writer.ts"],"sourcesContent":["import { Writer as WriterClient } from \"@writerai/writer-sdk\";\n\nimport { type BaseLLMParams, LLM } from \"@langchain/core/language_models/llms\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\n\n/**\n * Interface for the input parameters specific to the Writer model.\n */\nexport interface WriterInput extends BaseLLMParams {\n /** Writer API key */\n apiKey?: string;\n\n /** Writer organization ID */\n orgId?: string | number;\n\n /** Model to use */\n model?: string;\n\n /** Sampling temperature to use */\n temperature?: number;\n\n /** Minimum number of tokens to generate. */\n minTokens?: number;\n\n /** Maximum number of tokens to generate in the completion. */\n maxTokens?: number;\n\n /** Generates this many completions server-side and returns the \"best\".\" */\n bestOf?: number;\n\n /** Penalizes repeated tokens according to frequency. */\n frequencyPenalty?: number;\n\n /** Whether to return log probabilities. */\n logprobs?: number;\n\n /** Number of completions to generate. */\n n?: number;\n\n /** Penalizes repeated tokens regardless of frequency. */\n presencePenalty?: number;\n\n /** Total probability mass of tokens to consider at each step. */\n topP?: number;\n}\n\n/**\n * Class representing a Writer Large Language Model (LLM). It interacts\n * with the Writer API to generate text completions.\n */\nexport class Writer extends LLM implements WriterInput {\n static lc_name() {\n return \"Writer\";\n }\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"WRITER_API_KEY\",\n orgId: \"WRITER_ORG_ID\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return {\n apiKey: \"writer_api_key\",\n orgId: \"writer_org_id\",\n };\n }\n\n lc_serializable = true;\n\n apiKey: string;\n\n orgId: number;\n\n model = \"palmyra-instruct\";\n\n temperature?: number;\n\n minTokens?: number;\n\n maxTokens?: number;\n\n bestOf?: number;\n\n frequencyPenalty?: number;\n\n logprobs?: number;\n\n n?: number;\n\n presencePenalty?: number;\n\n topP?: number;\n\n constructor(fields?: WriterInput) {\n super(fields ?? {});\n\n const apiKey = fields?.apiKey ?? getEnvironmentVariable(\"WRITER_API_KEY\");\n const orgId = fields?.orgId ?? getEnvironmentVariable(\"WRITER_ORG_ID\");\n\n if (!apiKey) {\n throw new Error(\n \"Please set the WRITER_API_KEY environment variable or pass it to the constructor as the apiKey field.\"\n );\n }\n\n if (!orgId) {\n throw new Error(\n \"Please set the WRITER_ORG_ID environment variable or pass it to the constructor as the orgId field.\"\n );\n }\n\n this.apiKey = apiKey;\n this.orgId = typeof orgId === \"string\" ? parseInt(orgId, 10) : orgId;\n this.model = fields?.model ?? this.model;\n this.temperature = fields?.temperature ?? this.temperature;\n this.minTokens = fields?.minTokens ?? this.minTokens;\n this.maxTokens = fields?.maxTokens ?? this.maxTokens;\n this.bestOf = fields?.bestOf ?? this.bestOf;\n this.frequencyPenalty = fields?.frequencyPenalty ?? this.frequencyPenalty;\n this.logprobs = fields?.logprobs ?? this.logprobs;\n this.n = fields?.n ?? this.n;\n this.presencePenalty = fields?.presencePenalty ?? this.presencePenalty;\n this.topP = fields?.topP ?? this.topP;\n }\n\n _llmType() {\n return \"writer\";\n }\n\n /** @ignore */\n async _call(\n prompt: string,\n options: this[\"ParsedCallOptions\"]\n ): Promise<string> {\n const sdk = new WriterClient({\n security: {\n apiKey: this.apiKey,\n },\n organizationId: this.orgId,\n });\n\n return this.caller.callWithOptions({ signal: options.signal }, async () => {\n try {\n const res = await sdk.completions.create({\n completionRequest: {\n prompt,\n stop: options.stop,\n temperature: this.temperature,\n minTokens: this.minTokens,\n maxTokens: this.maxTokens,\n bestOf: this.bestOf,\n n: this.n,\n frequencyPenalty: this.frequencyPenalty,\n logprobs: this.logprobs,\n presencePenalty: this.presencePenalty,\n topP: this.topP,\n },\n modelId: this.model,\n });\n return (\n res.completionResponse?.choices?.[0].text ?? \"No completion found.\"\n );\n } catch (e) {\n // oxlint-disable-next-line typescript/no-explicit-any\n (e as any).response = (e as any).rawResponse;\n throw e;\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAkDA,IAAa,SAAb,cAA4BA,qCAAAA,IAA2B;CACrD,OAAO,UAAU;AACf,SAAO;;CAGT,IAAI,aAAoD;AACtD,SAAO;GACL,QAAQ;GACR,OAAO;GACR;;CAGH,IAAI,aAAoD;AACtD,SAAO;GACL,QAAQ;GACR,OAAO;GACR;;CAGH,kBAAkB;CAElB;CAEA;CAEA,QAAQ;CAER;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YAAY,QAAsB;AAChC,QAAM,UAAU,EAAE,CAAC;EAEnB,MAAM,SAAS,QAAQ,WAAA,GAAA,0BAAA,wBAAiC,iBAAiB;EACzE,MAAM,QAAQ,QAAQ,UAAA,GAAA,0BAAA,wBAAgC,gBAAgB;AAEtE,MAAI,CAAC,OACH,OAAM,IAAI,MACR,wGACD;AAGH,MAAI,CAAC,MACH,OAAM,IAAI,MACR,sGACD;AAGH,OAAK,SAAS;AACd,OAAK,QAAQ,OAAO,UAAU,WAAW,SAAS,OAAO,GAAG,GAAG;AAC/D,OAAK,QAAQ,QAAQ,SAAS,KAAK;AACnC,OAAK,cAAc,QAAQ,eAAe,KAAK;AAC/C,OAAK,YAAY,QAAQ,aAAa,KAAK;AAC3C,OAAK,YAAY,QAAQ,aAAa,KAAK;AAC3C,OAAK,SAAS,QAAQ,UAAU,KAAK;AACrC,OAAK,mBAAmB,QAAQ,oBAAoB,KAAK;AACzD,OAAK,WAAW,QAAQ,YAAY,KAAK;AACzC,OAAK,IAAI,QAAQ,KAAK,KAAK;AAC3B,OAAK,kBAAkB,QAAQ,mBAAmB,KAAK;AACvD,OAAK,OAAO,QAAQ,QAAQ,KAAK;;CAGnC,WAAW;AACT,SAAO;;;CAIT,MAAM,MACJ,QACA,SACiB;EACjB,MAAM,MAAM,IAAIC,qBAAAA,OAAa;GAC3B,UAAU,EACR,QAAQ,KAAK,QACd;GACD,gBAAgB,KAAK;GACtB,CAAC;AAEF,SAAO,KAAK,OAAO,gBAAgB,EAAE,QAAQ,QAAQ,QAAQ,EAAE,YAAY;AACzE,OAAI;AAiBF,YAhBY,MAAM,IAAI,YAAY,OAAO;KACvC,mBAAmB;MACjB;MACA,MAAM,QAAQ;MACd,aAAa,KAAK;MAClB,WAAW,KAAK;MAChB,WAAW,KAAK;MAChB,QAAQ,KAAK;MACb,GAAG,KAAK;MACR,kBAAkB,KAAK;MACvB,UAAU,KAAK;MACf,iBAAiB,KAAK;MACtB,MAAM,KAAK;MACZ;KACD,SAAS,KAAK;KACf,CAAC,EAEI,oBAAoB,UAAU,GAAG,QAAQ;YAExC,GAAG;AAET,MAAU,WAAY,EAAU;AACjC,UAAM;;IAER"}