npm package: @rocketnew/llm-sdk
Description: Universal LLM SDK for JavaScript/TypeScript - OpenAI, Anthropic, Gemini, Perplexity and more
Author: Rocket Team
Latest version: 1.0.3

# RocketLLM TypeScript SDK

Universal LLM SDK for JavaScript/TypeScript.

## Installation

```bash
npm i @rocketnew/llm-sdk
```

---

## Chat Completion

### OpenAI

**Basic**
```typescript
import { completion } from '@rocket/rocketllm';

const response = await completion({
  model: 'gpt-4',
  messages: [{ role: 'user', content: 'Hello!' }]
});
```

**Streaming**
```typescript
const stream = await completion({
  model: 'gpt-4',
  messages: [{ role: 'user', content: 'Count to 5' }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
```

**Tool Calling**
```typescript
const response = await completion({
  model: 'gpt-4',
  messages: [{ role: 'user', content: 'What is the weather in Paris?' }],
  tools: [{
    type: 'function',
    function: {
      name: 'get_weather',
      description: 'Get weather for a location',
      parameters: {
        type: 'object',
        properties: {
          location: { type: 'string' }
        },
        required: ['location']
      }
    }
  }]
});
```

**JSON Mode**
```typescript
const response = await completion({
  model: 'gpt-4',
  messages: [{ role: 'user', content: 'List 3 colors in JSON' }],
  response_format: { type: 'json_object' }
});
```

**Vision**
```typescript
const response = await completion({
  model: 'gpt-4-vision-preview',
  messages: [{
    role: 'user',
    content: [
      { type: 'text', text: 'Describe this image' },
      { type: 'image_url', image_url: 'https://example.com/image.jpg' }
    ]
  }]
});
```

---

### Anthropic

**Basic**
```typescript
const response = await completion({
  model: 'claude-3-5-sonnet-20241022',
  messages: [{ role: 'user', content: 'Hello!' }]
});
```

**Streaming**
```typescript
const stream = await completion({
  model: 'claude-3-7-sonnet-20250219',
  messages: [{ role: 'user', content: 'Write a poem' }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
```

**Tool Calling**
```typescript
const response = await completion({
  model: 'cclaude-3-7-sonnet-20250219',
  messages: [{ role: 'user', content: 'Calculate 25 * 4' }],
  tools: [{
    type: 'function',
    function: {
      name: 'calculate',
      parameters: {
        type: 'object',
        properties: {
          operation: { type: 'string' },
          a: { type: 'number' },
          b: { type: 'number' }
        }
      }
    }
  }]
});
```

**Extended Thinking**
```typescript
const response = await completion({
  model: 'claude-3-7-sonnet-20250219',
  messages: [{ role: 'user', content: 'Solve this complex problem...' }],
  thinking: { type: 'enabled', budget_tokens: 2000 }
});

// Access thinking blocks
console.log(response.choices[0].message.thinking_blocks);
```

**Reasoning Effort**
```typescript
const response = await completion({
  model: 'claude-3-7-sonnet-20250219',
  messages: [{ role: 'user', content: 'Explain quantum computing' }],
  reasoning_effort: 'high'  // 'minimal' | 'low' | 'medium' | 'high'
});
```

**Web Search**
```typescript
const response = await completion({
  model: 'claude-3-7-sonnet-20250219',
  messages: [{ role: 'user', content: 'What are the latest AI news?' }],
  web_search_options: {
    search_context_size: 'medium'  // 'low' | 'medium' | 'high'
  }
});
```

**JSON Mode**
```typescript
const response = await completion({
  model: 'claude-3-7-sonnet-20250219,
  messages: [{ role: 'user', content: 'List 3 colors' }],
  response_format: { type: 'json_object' }
});
```

---

### Gemini

**Basic**
```typescript
const response = await completion({
  model: 'gemini/gemini-2.5-flash-lite',
  messages: [{ role: 'user', content: 'Hello!' }]
});
```

**Streaming**
```typescript
const stream = await completion({
  model: 'gemini/gemini-2.5-flash-lite',
  messages: [{ role: 'user', content: 'Explain AI' }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
```

**Tool Calling**
```typescript
const response = await completion({
  model: 'gemini/gemini-2.5-flash-lite',
  messages: [{ role: 'user', content: 'Get weather for Tokyo' }],
  tools: [{
    type: 'function',
    function: {
      name: 'get_weather',
      parameters: {
        type: 'object',
        properties: {
          location: { type: 'string' }
        }
      }
    }
  }]
});
```

**Reasoning**
```typescript
const response = await completion({
  model: 'gemini/gemini-2.5-flash-lite',
  messages: [{ role: 'user', content: 'Solve this logic puzzle...' }],
  reasoning: true
});
```

**Vision**
```typescript
const response = await completion({
  model: 'gemini/gemini-2.5-flash-lite',
  messages: [{
    role: 'user',
    content: [
      { type: 'text', text: 'What is in this image?' },
      { type: 'image_url', image_url: 'https://example.com/photo.jpg' }
    ]
  }]
});
```

**JSON Mode**
```typescript
const response = await completion({
  model: 'gemini/gemini-2.5-flash-lite',
  messages: [{ role: 'user', content: 'List 3 countries' }],
  response_format: { type: 'json_object' }
});
```

---

### Perplexity

**Basic**
```typescript
const response = await completion({
  model: 'llama-3.1-sonar-small-128k-online',
  messages: [{ role: 'user', content: 'What is TypeScript?' }]
});
```

**Streaming**
```typescript
const stream = await completion({
  model: 'llama-3.1-sonar-small-128k-online',
  messages: [{ role: 'user', content: 'Explain React' }],
  stream: true
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
```

**With Citations**
```typescript
const response = await completion({
  model: 'llama-3.1-sonar-small-128k-online',
  messages: [{ role: 'user', content: 'Latest AI developments?' }]
});

// Response includes citations
console.log(response.choices[0].message.content);
```

---

Made with ❤️ by Rocket Team