UNPKG

@langchain/community

Version:
1 lines • 6.28 kB
{"version":3,"file":"writer.cjs","names":["LLM","fields?: WriterInput","prompt: string","options: this[\"ParsedCallOptions\"]","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 // eslint-disable-next-line @typescript-eslint/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,0CAA2B;CACrD,OAAO,UAAU;AACf,SAAO;CACR;CAED,IAAI,aAAoD;AACtD,SAAO;GACL,QAAQ;GACR,OAAO;EACR;CACF;CAED,IAAI,aAAoD;AACtD,SAAO;GACL,QAAQ;GACR,OAAO;EACR;CACF;CAED,kBAAkB;CAElB;CAEA;CAEA,QAAQ;CAER;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YAAYC,QAAsB;EAChC,MAAM,UAAU,CAAE,EAAC;EAEnB,MAAM,SAAS,QAAQ,iEAAiC,iBAAiB;EACzE,MAAM,QAAQ,QAAQ,gEAAgC,gBAAgB;AAEtE,MAAI,CAAC,OACH,OAAM,IAAI,MACR;AAIJ,MAAI,CAAC,MACH,OAAM,IAAI,MACR;EAIJ,KAAK,SAAS;EACd,KAAK,QAAQ,OAAO,UAAU,WAAW,SAAS,OAAO,GAAG,GAAG;EAC/D,KAAK,QAAQ,QAAQ,SAAS,KAAK;EACnC,KAAK,cAAc,QAAQ,eAAe,KAAK;EAC/C,KAAK,YAAY,QAAQ,aAAa,KAAK;EAC3C,KAAK,YAAY,QAAQ,aAAa,KAAK;EAC3C,KAAK,SAAS,QAAQ,UAAU,KAAK;EACrC,KAAK,mBAAmB,QAAQ,oBAAoB,KAAK;EACzD,KAAK,WAAW,QAAQ,YAAY,KAAK;EACzC,KAAK,IAAI,QAAQ,KAAK,KAAK;EAC3B,KAAK,kBAAkB,QAAQ,mBAAmB,KAAK;EACvD,KAAK,OAAO,QAAQ,QAAQ,KAAK;CAClC;CAED,WAAW;AACT,SAAO;CACR;;CAGD,MAAM,MACJC,QACAC,SACiB;EACjB,MAAM,MAAM,IAAIC,6BAAa;GAC3B,UAAU,EACR,QAAQ,KAAK,OACd;GACD,gBAAgB,KAAK;EACtB;AAED,SAAO,KAAK,OAAO,gBAAgB,EAAE,QAAQ,QAAQ,OAAQ,GAAE,YAAY;AACzE,OAAI;IACF,MAAM,MAAM,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;KACZ;KACD,SAAS,KAAK;IACf,EAAC;AACF,WACE,IAAI,oBAAoB,UAAU,GAAG,QAAQ;GAEhD,SAAQ,GAAG;IAET,EAAU,WAAY,EAAU;AACjC,UAAM;GACP;EACF,EAAC;CACH;AACF"}