import { getEnvironmentVariable } from "@langchain/core/utils/env"; import { LLM } from "@langchain/core/language_models/llms"; /** * Class representing a Cohere Large Language Model (LLM). It interacts * with the Cohere API to generate text completions. * @example * ```typescript * const model = new Cohere({ * temperature: 0.7, * maxTokens: 20, * maxRetries: 5, * }); * * const res = await model.invoke( * "Question: What would be a good company name for a company that makes colorful socks?\nAnswer:" * ); * console.log({ res }); * ``` * @deprecated Use `Cohere` from `@langchain/cohere` instead. */ export class Cohere extends LLM { static lc_name() { return "Cohere"; } get lc_secrets() { return { apiKey: "COHERE_API_KEY", }; } get lc_aliases() { return { apiKey: "cohere_api_key", }; } constructor(fields) { super(fields ?? {}); Object.defineProperty(this, "lc_serializable", { enumerable: true, configurable: true, writable: true, value: true }); Object.defineProperty(this, "temperature", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "maxTokens", { enumerable: true, configurable: true, writable: true, value: 250 }); Object.defineProperty(this, "model", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "apiKey", { enumerable: true, configurable: true, writable: true, value: void 0 }); const apiKey = fields?.apiKey ?? getEnvironmentVariable("COHERE_API_KEY"); if (!apiKey) { throw new Error("Please set the COHERE_API_KEY environment variable or pass it to the constructor as the apiKey field."); } this.apiKey = apiKey; this.maxTokens = fields?.maxTokens ?? this.maxTokens; this.temperature = fields?.temperature ?? this.temperature; this.model = fields?.model ?? this.model; } _llmType() { return "cohere"; } /** @ignore */ async _call(prompt, options) { const { cohere } = await Cohere.imports(); cohere.init(this.apiKey); // Hit the `generate` endpoint on the `large` model const generateResponse = await this.caller.callWithOptions({ signal: options.signal }, cohere.generate.bind(cohere), { prompt, model: this.model, max_tokens: this.maxTokens, temperature: this.temperature, end_sequences: options.stop, }); try { return generateResponse.body.generations[0].text; } catch { console.log(generateResponse); throw new Error("Could not parse response."); } } /** @ignore */ static async imports() { try { const { default: cohere } = await import("cohere-ai"); return { cohere }; } catch (e) { throw new Error("Please install cohere-ai as a dependency with, e.g. `yarn add cohere-ai`"); } } }