a typescript library for building LLM applications+agents
To install everything:
npm i generative-tsYou can also do more granular installs of scoped packages if you want to optimize your builds further (see packages)
API docs: createAwsBedrockModelProvider 
import {
  AmazonTitanTextApi,
  createAwsBedrockModelProvider
} from "generative-ts";
// Bedrock supports many different APIs and models. See API docs (above) for full list.
const titanText = createAwsBedrockModelProvider({
  api: AmazonTitanTextApi,
  modelId: "amazon.titan-text-express-v1",
  // If your code is running in an AWS Environment (eg, Lambda) authorization will happen automatically. Otherwise, explicitly pass in `auth`
});
const response = await titanText.sendRequest({ 
  $prompt:"Brief history of NY Mets:" 
  // all other options for the specified `api` available here
});
console.log(response.results[0]?.outputText);API docs: createCohereModelProvider 
import { createCohereModelProvider } from "generative-ts";
const commandR = createCohereModelProvider({
  modelId: "command-r-plus", // Cohere defined model ID
  // you can explicitly pass auth here, otherwise by default it is read from process.env
});
const response = await commandR.sendRequest({
  $prompt:"Brief History of NY Mets:",
  preamble: "Talk like Jafar from Aladdin",
  // all other Cohere /generate options available here
});
console.log(response.text);API docs: createVertexAiModelProvider 
import { createVertexAiModelProvider } from "@packages/gcloud-vertex-ai";
const gemini = await createVertexAiModelProvider({
  modelId: "gemini-1.0-pro", // VertexAI defined model ID
  // you can explicitly pass auth here, otherwise by default it is read from process.env
});
const response = await gemini.sendRequest({
  $prompt:"Brief History of NY Mets:",
  // all other Gemini options available here
});
console.log(response.data.candidates[0]);API docs: createGroqModelProvider 
import { createGroqModelProvider } from "generative-ts";
const llama3 = createGroqModelProvider({
  modelId: "llama3-70b-8192", // Groq defined model ID
  // you can explicitly pass auth here, otherwise by default it is read from process.env
});
const response = await llama3.sendRequest({ 
  $prompt:"Brief History of NY Mets:" 
  // all other OpenAI ChatCompletion options available here (Groq uses the OpenAI ChatCompletion API for all the models it hosts)
});
console.log(response.choices[0]?.message.content);API docs: createHuggingfaceInferenceModelProvider 
import { 
  createHuggingfaceInferenceModelProvider, 
  HfTextGenerationTaskApi 
} from "generative-ts";
// Huggingface Inference supports many different APIs and models. See API docs (above) for full list.
const gpt2 = createHuggingfaceInferenceModelProvider({
  api: HfTextGenerationTaskApi,
  modelId: "gpt2",
  // you can explicitly pass auth here, otherwise by default it is read from process.env
});
const response = await gpt2.sendRequest({ 
  $prompt:"Hello," 
  // all other options for the specified `api` available here
});
console.log(response[0]?.generated_text);API docs: createLmStudioModelProvider 
import { createLmStudioModelProvider } from "generative-ts";
const llama3 = createLmStudioModelProvider({
  modelId: "lmstudio-community/Meta-Llama-3-70B-Instruct-GGUF", // a ID of a model you have downloaded in LMStudio
});
const response = await llama3.sendRequest({ 
  $prompt:"Brief History of NY Mets:" 
  // all other OpenAI ChatCompletion options available here (LMStudio uses the OpenAI ChatCompletion API for all the models it hosts)
});
console.log(response.choices[0]?.message.content);API docs: createMistralModelProvider 
import { createMistralModelProvider } from "generative-ts";
const mistralLarge = createMistralModelProvider({
  modelId: "mistral-large-latest", // Mistral defined model ID
  // you can explicitly pass auth here, otherwise by default it is read from process.env
});
const response = await mistralLarge.sendRequest({ 
  $prompt:"Brief History of NY Mets:" 
  // all other Mistral ChatCompletion API options available here
});
console.log(response.choices[0]?.message.content);API docs: createOpenAiChatModelProvider 
import { createOpenAiChatModelProvider } from "generative-ts";
const gpt = createOpenAiChatModelProvider({
  modelId: "gpt-4-turbo", // OpenAI defined model ID
  // you can explicitly pass auth here, otherwise by default it is read from process.env
});
const response = await gpt.sendRequest({
  $prompt:"Brief History of NY Mets:",
  max_tokens: 100,
  // all other OpenAI ChatCompletion options available here
});
console.log(response.choices[0]?.message.content);todo;See Usage for how to use each provider.
| Provider | Models | Model APIs | 
|---|---|---|
| AWS Bedrock | Multiple hosted models | Native model APIs | 
| Cohere | Command / Command R+ | Cohere /generate and /chat | 
| Google Vertex AI | Gemini x.y | Gemini; OpenAI in preview | 
| Groq | Multiple hosted models | OpenAI ChatCompletion | 
| Huggingface Inference | Open-source | Huggingface Inference APIs | 
| LMStudio (localhost) | Open-source (must be downloaded) | OpenAI ChatCompletion | 
| Mistral | Mistral x.y | Mistral ChatCompletion | 
| OpenAI | GPT x.y | OpenAI ChatCompletion | 
| Azure (coming soon) | ||
| Replicate (coming soon) | ||
| Anthropic (coming soon) | ||
| Fireworks (coming soon) | 
It's also easy to add your own TODO LINK
If you're using a modern bundler, just install generative-ts to get everything. Modern bundlers support tree-shaking, so your final bundle won't include unused code. (Note: we distribute both ESM and CJS bundles for compatibility.) If you prefer to avoid unnecessary downloads, or you're operating under constraints where tree-shaking isn't an option, we offer scoped packages under @generative-ts/ with specific functionality for more fine-grained installs.
| Package | Description | |
|---|---|---|
| generative-ts | Everything | Includes all scoped packages listed below | 
| @generative-ts/core | Core functionality (zero dependencies) | Interfaces, classes, utilities, etc | 
| @generative-ts/gcloud-vertex-ai | Google Cloud VertexAI ModelProvider | Uses Application Default Credentials (ADC) to properly authenticate in GCloud environments | 
| @generative-ts/aws-bedrock | AWS Bedrock ModelProvider | Uses aws4 to properly authenticate when running in AWS environments | 
Please submit all issues here: https://github.com/Econify/generative-ts/issues
To get started developing, optionally fork and then clone the repository and run:
nvm use
npm ciTo run examples and integration/e2e tests, create an .env file by running cp .env.example .env and then add values where necessary
The "main" generative-ts package and the scoped @generative-ts packages both are controlled by the generative-ts npm organization. Releases are published via circleci job upon pushes of tags that have a name starting with release/. The job requires an NPM token that has publishing permissions to both generative-ts and @generative-ts. Currently this is a "granular" token set to expire every 30 days, created by @jnaglick, set in a circleci context.