> ## Documentation Index
> Fetch the complete documentation index at: https://docs.runanywhere.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# chat()

> Simple one-liner chat interface

## Overview

The `chat()` method provides the simplest way to interact with an LLM. It takes a prompt and returns just the response text, making it perfect for quick integrations.

## Basic Usage

```typescript theme={null}
import { RunAnywhere } from '@runanywhere/core'

// Simple question
const response = await RunAnywhere.chat('What is the capital of France?')
console.log(response) // "Paris is the capital of France."

// Follow-up (stateless - each call is independent)
const answer = await RunAnywhere.chat('What is 2 + 2?')
console.log(answer) // "4"
```

## API Reference

```typescript theme={null}
await RunAnywhere.chat(prompt: string): Promise<string>
```

### Parameters

| Parameter | Type     | Description                    |
| --------- | -------- | ------------------------------ |
| `prompt`  | `string` | The user's message or question |

### Returns

| Type              | Description                 |
| ----------------- | --------------------------- |
| `Promise<string>` | The generated response text |

### Throws

| Error Code         | Description         |
| ------------------ | ------------------- |
| `notInitialized`   | SDK not initialized |
| `modelNotLoaded`   | No LLM model loaded |
| `generationFailed` | Generation failed   |

## Examples

### Simple Q\&A

```typescript theme={null}
const capital = await RunAnywhere.chat('What is the capital of Japan?')
// "Tokyo is the capital of Japan."

const math = await RunAnywhere.chat('Calculate 15% of 200')
// "15% of 200 is 30."

const translation = await RunAnywhere.chat('Translate "Hello" to Spanish')
// "Hola"
```

### React Component

```tsx ChatComponent.tsx theme={null}
import React, { useState } from 'react'
import { View, TextInput, Button, Text } from 'react-native'
import { RunAnywhere } from '@runanywhere/core'

export function ChatComponent() {
  const [input, setInput] = useState('')
  const [response, setResponse] = useState('')
  const [loading, setLoading] = useState(false)

  const handleSend = async () => {
    if (!input.trim()) return

    setLoading(true)
    try {
      const answer = await RunAnywhere.chat(input)
      setResponse(answer)
    } catch (error) {
      setResponse('Error: ' + (error as Error).message)
    } finally {
      setLoading(false)
    }
  }

  return (
    <View style={{ padding: 16 }}>
      <TextInput
        value={input}
        onChangeText={setInput}
        placeholder="Ask anything..."
        style={{ borderWidth: 1, padding: 8, marginBottom: 8 }}
      />
      <Button title={loading ? 'Thinking...' : 'Send'} onPress={handleSend} disabled={loading} />
      {response ? <Text style={{ marginTop: 16 }}>{response}</Text> : null}
    </View>
  )
}
```

### With Error Handling

```typescript theme={null}
import { RunAnywhere, isSDKError, SDKErrorCode } from '@runanywhere/core'

async function askQuestion(question: string): Promise<string> {
  try {
    return await RunAnywhere.chat(question)
  } catch (error) {
    if (isSDKError(error)) {
      switch (error.code) {
        case SDKErrorCode.notInitialized:
          throw new Error('Please initialize the SDK first')
        case SDKErrorCode.modelNotLoaded:
          throw new Error('Please load a model first')
        default:
          throw new Error('AI error: ' + error.message)
      }
    }
    throw error
  }
}

// Usage
const response = await askQuestion('What is AI?')
```

## Chat vs Generate

| Feature       | `chat()`          | `generate()`                       |
| ------------- | ----------------- | ---------------------------------- |
| Return type   | `string`          | `GenerationResult`                 |
| Metrics       | No                | Yes (tokens, latency, tok/s)       |
| Options       | No                | Yes (maxTokens, temperature, etc.) |
| System prompt | No                | Yes                                |
| Use case      | Quick prototyping | Production apps                    |

<Tip>
  Use `chat()` for quick prototyping and simple interactions. Switch to `generate()` when you need
  performance metrics, custom options, or system prompts.
</Tip>

## Related

<CardGroup cols={2}>
  <Card title="Generate" icon="wand-magic-sparkles" href="/react-native/llm/generate">
    Full generation with options and metrics
  </Card>

  <Card title="Streaming" icon="water" href="/react-native/llm/stream">
    Real-time token streaming
  </Card>
</CardGroup>
