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

# Together AI

> Trace Together AI inference calls with Netra auto-instrumentation. Monitor prompts, completions, token usage, and latency across open-source models.

<img src="https://mintcdn.com/netra/IXT7TOAHn4HQhvyF/images/integration-logos/llm-providers/together-ai.png?fit=max&auto=format&n=IXT7TOAHn4HQhvyF&q=85&s=4433e69ecb9f781117f5e9e5305f04a9" alt="Together AI" width="403" height="80" data-path="images/integration-logos/llm-providers/together-ai.png" />

## Installation

Install both the Netra SDK and Together AI SDK:

<CodeGroup>
  ```bash Python theme={null}
  pip install netra-sdk together
  ```

  ```bash Typescript theme={null}
  npm install netra-sdk together-ai
  ```
</CodeGroup>

## Usage

Initialize the Netra SDK with Together AI instrumentation enabled. The SDK automatically traces all Together AI API calls once initialized.

<CodeGroup>
  ```python Python theme={null}
  from netra import Netra
  from together import Together
  import os

  # Initialize Netra with Together AI instrumentation
  Netra.init(
      app_name="my-ai-app",
      headers=f"x-api-key={os.environ.get('NETRA_API_KEY')}",
      trace_content=True
  )

  # Use Together AI client as usual - all calls are automatically traced
  client = Together(api_key=os.environ.get("TOGETHER_API_KEY"))

  response = client.chat.completions.create(
      model="mistralai/Mixtral-8x7B-Instruct-v0.1",
      messages=[
          {"role": "user", "content": "What is observability?"}
      ]
  )

  print(response.choices[0].message.content)
  ```

  ```typescript Typescript theme={null}
  import { Netra } from "netra-sdk";
  import Together from "together-ai";

  async function main() {
    // Initialize Netra with Together AI instrumentation (must await)
    await Netra.init({
      appName: "my-ai-app",
      headers: `x-api-key=${process.env.NETRA_API_KEY}`,
      traceContent: true
    });

    // Use Together AI client as usual - all calls are automatically traced
    const together = new Together({
      apiKey: process.env.TOGETHER_API_KEY
    });

    const response = await together.chat.completions.create({
      model: "mistralai/Mixtral-8x7B-Instruct-v0.1",
      messages: [
        { role: "user", content: "What is observability?" }
      ]
    });

    console.log(response.choices[0].message.content);
  }

  main();
  ```
</CodeGroup>

### Streaming Responses

The SDK automatically handles streaming responses and captures the complete output:

<CodeGroup>
  ```python Python theme={null}
  stream = client.chat.completions.create(
      model="mistralai/Mixtral-8x7B-Instruct-v0.1",
      messages=[{"role": "user", "content": "Tell me a story"}],
      stream=True
  )

  for chunk in stream:
      if chunk.choices[0].delta.content:
          print(chunk.choices[0].delta.content, end="")
  ```

  ```typescript Typescript theme={null}
  const stream = await together.chat.completions.create({
    model: "mistralai/Mixtral-8x7B-Instruct-v0.1",
    messages: [{ role: "user", content: "Tell me a story" }],
    stream: true
  });

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

### Embeddings

Embedding operations are also automatically instrumented:

<CodeGroup>
  ```python Python theme={null}
  embeddings = client.embeddings.create(
      model="togethercomputer/m2-bert-80M-8k-retrieval",
      input="The quick brown fox jumps over the lazy dog"
  )

  print(embeddings.data[0].embedding)
  ```

  ```typescript Typescript theme={null}
  const embeddings = await together.embeddings.create({
    model: "togethercomputer/m2-bert-80M-8k-retrieval",
    input: "The quick brown fox jumps over the lazy dog"
  });

  console.log(embeddings.data[0].embedding);
  ```
</CodeGroup>

### Selective Instrumentation

Control which integrations are enabled using the `instruments` or `blockInstruments` configuration:

<CodeGroup>
  ```python Python theme={null}
  from netra import Netra
  from netra.instrumentation.instruments import InstrumentSet

  # Only enable Together AI instrumentation
  Netra.init(
      headers=f"x-api-key={os.environ.get('NETRA_API_KEY')}",
      instruments={InstrumentSet.TOGETHER}
  )

  # Or block specific instrumentations
  Netra.init(
      headers=f"x-api-key={os.environ.get('NETRA_API_KEY')}",
      block_instruments={InstrumentSet.HTTPX}
  )
  ```

  ```typescript Typescript theme={null}
  import { Netra, NetraInstruments } from "netra-sdk";

  // Only enable Together AI instrumentation
  await Netra.init({
    headers: `x-api-key=${process.env.NETRA_API_KEY}`,
    instruments: new Set([NetraInstruments.TOGETHER])
  });

  // Or block specific instrumentations
  await Netra.init({
    headers: `x-api-key=${process.env.NETRA_API_KEY}`,
    blockInstruments: new Set([NetraInstruments.HTTP])
  });
  ```
</CodeGroup>

## Next Steps

* [Quick Start Guide](https://docs.getnetra.ai/quick-start/python) - Complete setup and configuration
* [Auto Instrumentation](https://docs.getnetra.ai/tracing/auto-instrumentation) - Automatic tracing for supported libraries
* [Decorators](https://docs.getnetra.ai/tracing/decorators) - Add custom tracing with `@workflow`, `@agent`, and `@task` decorators
* [Session Tracking](https://docs.getnetra.ai/tracing/session) - Track user sessions and conversations
* [Together AI Documentation](https://docs.together.ai/docs/quickstart) - Official Together AI quickstart guide
