@anam-ai/js-sdk
Version:
Client side JavaScript SDK for Anam AI
107 lines (72 loc) • 3.9 kB
Markdown
# Anam AI JavaScript SDK
This is the official JavaScript SDK for integrating Anam AI realtime digital personas into your product. It provides a simple and intuitive API to interact with Anam AI's services.
## Introduction
The Anam AI JavaScript SDK is designed to help developers integrate Anam AI's digital personas into their JavaScript applications. The SDK provides a set of APIs and utilities to make it easier to create, manage, and interact with digital personas in a realtime environment.
## Documentation
Full documentation is available at [docs.anam.ai](https://docs.anam.ai).
## Examples
Check out our [example projects](https://github.com/anam-org/anam-examples) for implementation samples.
## Prerequisites
### An Anam AI account
To create a free account head to the [Anam Lab](https://lab.anam.ai) and sign up.
### An Anam API key
To use the SDK you first need an API key. Follow the instructions [here](https://docs.anam.ai/guides/get-started/api-key) to create one.
# Getting Started
First, install the SDK in your project
```zsh
npm install @anam-ai/js-sdk
```
## Local development
The quickest way to start testing the SDK is to use your API key directly with our SDK and [choose a default persona](#listing-personas) from our predefined examples.
To use the SDK you first need to create an instance of `AnamClient`. For local development you can do this using the `unsafe_createClientWithApiKey` method.
```typescript
import { unsafe_createClientWithApiKey } from '@anam-ai/js-sdk';
const anamClient = unsafe_createClientWithApiKey('your-api-key', {
personaId: 'chosen-persona-id',
});
```
**NOTE**: the method `unsafe_createClientWithApiKey` is unsafe for production use cases because it requires exposing your api key to the client. When deploying to production see [production usage](#usage-in-production) first.
Once you have an instance of the Anam client initialised you can start a session by streaming to audio and video elements in the DOM.
```typescript
await anamClient.streamToVideoAndAudioElements(
'video-element-id',
'audio-element-id',
);
```
This will start a new session using the pre-configured persona id and start streaming video and audio to the elements in the DOM with the matching element ids.
To stop a session use the `stopStreaming` method.
```typescript
anamClient.stopStreaming();
```
## Usage in production
When deploying to production it is important not to publicly expose your API key. To avoid this issue you should first exchange your API key for a short-lived session token on the server side. Session tokens can then be passed to the client and used to initialise the Anam SDK.
**From the server**
```typescript
const response = await fetch(`https://api.anam.ai/v1/auth/session-token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
},
body: JSON.stringify({
personaConfig: {
name: 'Test Assistant',
personaPreset: 'eva',
brainType: 'ANAM_GPT_4O_MINI_V1',
personality: 'You are a helpful and friendly AI assistant.',
systemPrompt:
'You are an AI assistant focused on helping with technical questions.',
fillerPhrases: ['Let me think about that...'],
},
}),
});
const data = await response.json();
const sessionToken = data.sessionToken;
```
Once you have a session token you can use the `createClient` method of the Anam SDK to initialise an Anam client instance.
```typescript
import { createClient } from '@anam-ai/js-sdk';
const anamClient = createClient('your-session-token');
```
Regardless of whether you initialise the client using an API key or session token the client exposes the same set of available methods for streaming.
[See here](#starting-a-session-in-production-environments) for an example sequence diagram of starting a session in production environments.