# OpenAI Compatibility

Currently, some large language models support calling through the OpenAI library. After installing Python 3.7.1 or later and setting up a virtual environment, you can install the OpenAI Python library. Run the following command in the terminal/command line:

```bash
pip install --upgrade openai
```

Si's API endpoints for chat, language and code, images, and embeddings are fully compatible with OpenAI's API.

For applications utilizing OpenAI's client libraries, configuring them to connect to Si's API servers is straightforward. This allows you to seamlessly execute your existing applications with our open-source models

### Configuring OpenAI to use Si API

To start using Together with OpenAI's client libraries, pass in your Together API key to the `api_key` option, and change the `base_url` to `https://api.together.xyz/v1`:

```python
import os
import openai

client = openai.OpenAI(
  api_key="YOUR_API_KEY",
  base_url="https://api.TBA/v1",
)
```

You can find your API key in [your settings page](https://api.together.xyz/settings/api-keys).&#x20;

### Querying an Inference model

Now that your OpenAI client is configured to point to Si, you can start using one of our open-source models for your inference queries.

For example, you can query one of our [chat models](https://docs.together.ai/docs/chat-models), like Meta Llama 3:

```python
import os
import openai

client = openai.OpenAI(
  api_key="YOUR_API_KEY",
  base_url="https://api.TBA/v1",
)

response = client.chat.completions.create(
  model="meta-llama/Llama-3-8b-chat-hf",
  messages=[
    {"role": "system", "content": "You are a travel agent. Be descriptive and helpful."},
    {"role": "user", "content": "Tell me about San Francisco"},
  ]
)

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

Or you can use a [language model](https://docs.together.ai/docs/language-and-code-models) to generate a code completion:

```python
import os
import openai

client = openai.OpenAI(
  api_key="YOUR_API_KEY",
  base_url="https://api.TBA/v1",
)

response = client.completions.create(
  model="codellama/CodeLlama-34b-Python-hf",
  prompt="def bubbleSort(): ",
  max_tokens=175
)

print(response.choices[0].text)
```

### Streaming with OpenAI

You can also use OpenAI's streaming capabilities to stream back your response:

```python
import os
import openai

system_content = "You are a travel agent. Be descriptive and helpful."
user_content = "Tell me about San Francisco"

client = openai.OpenAI(
  api_key="YOUR_API_KEY",
  base_url="https://api.TBA/v1",
)

stream = client.chat.completions.create(
  model="mistralai/Mixtral-8x7B-Instruct-v0.1",
  messages=[
    {"role": "system", "content": system_content},
    {"role": "user", "content": user_content},
  ],
  stream=True,
)

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

### Community libraries

The Together API is also supported by most [OpenAI libraries built by the community](https://platform.openai.com/docs/libraries/community-libraries).

Feel free to [reach out to support](https://www.together.ai/contact) if you come across some unexpected behavior when using our API.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://si0-1.gitbook.io/si-docs/si-llm/openai-compatibility.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
