Package Exports
- polyglot-sdk
- polyglot-sdk/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (polyglot-sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Polyglot SDK
Polyglot is a powerful and flexible TypeScript SDK for interacting with multiple Language Model APIs. It provides a unified interface for various LLMs, along with advanced features like streaming responses, caching, middleware support, and error handling.
Features
- Multi-model Support: Easily integrate and switch between different LLM providers (supports Claude, ChatGPT, Mistral, and Gemini).
- Streaming Responses: Get real-time responses from supported models.
- Caching Layer: Improve performance with built-in caching for repeated queries.
- Middleware System: Customize request/response processing with a flexible middleware system.
- Robust Error Handling: Automatically retry on transient errors and provide clear error messages.
- TypeScript Support: Full TypeScript support for improved developer experience.
- Extensible Architecture: Easily add new models or extend functionality.
- Rate Limiting: Built-in rate limiting to prevent API quota exhaustion.
Installation
npm install polyglot-sdk
Quick Start
import { Polyglot, Models, ModelConfig } from "polyglot-sdk";
const polyglot = new Polyglot();
const claudeConfig: ModelConfig = {
apiKey: "your-claude-api-key",
model: "claude-3-5-sonnet-20240620",
};
polyglot.addModel("claude", new Models.ClaudeModel(claudeConfig));
async function getResponse() {
const messages = [{ role: "user", content: "Hello, how are you?" }];
const response = await polyglot.generateResponse("claude", messages);
console.log(response.content);
}
getResponse();
Supported Platforms and Models
Platform | Supported Models |
---|---|
Claude (Anthropic) | claude-3-5-sonnet-20240620, claude-3-opus-20240229, claude-3-sonnet-20240229, claude-3-haiku-20240307 |
ChatGPT (OpenAI) | gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo |
Mistral AI | open-mistral-nemo, mistral-small-latest, mistral-medium-latest, mistral-large-latest, codestral-latest |
Google Gemini | gemini-1.5-pro, gemini-1.5-flash, gemini-1.0-pro |
Advanced Usage
Streaming Responses
const stream = polyglot.generateStreamingResponse("claude", messages);
stream.on("data", (chunk) => console.log("Received chunk:", chunk.toString()));
stream.on("end", () => console.log("Stream ended"));
Using Middleware
polyglot.use(async (messages, next) => {
console.log("Sending messages:", messages);
const response = await next(messages);
console.log("Received response:", response);
return response;
});
Caching
Caching is enabled by default. To disable:
const response = await polyglot.generateResponse("claude", messages, {
useCache: false,
});
Switching Models
You can easily switch between different models of the same platform:
const chatgptModel = polyglot.getModel("chatgpt");
chatgptModel.setModel("gpt-4-turbo");
API Reference
For detailed API reference, please refer to the TypeScript definitions in the types.ts
file.
License
This project is licensed under the MIT License.