> ## Documentation Index
> Fetch the complete documentation index at: https://portkey-docs-add-third-party-integration-issues-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# SiliconFlow

With Portkey, you can take advantage of features like fast AI gateway access, observability, prompt management, and more, all while ensuring the secure management of your LLM API keys through a [virtual key](/product/ai-gateway/virtual-keys) system.

<Note>
  Provider Slug: `siliconflow`
</Note>

## Portkey SDK Integration with SiliconFlow Models

Portkey provides a consistent API to interact with models from various providers. To integrate SiliconFlow with Portkey:

### 1. Install the Portkey SDK

Add the Portkey SDK to your application to interact with SiliconFlow's API through Portkey's gateway.

<Tabs>
  <Tab title="NodeJS">
    ```sh theme={null}
    npm install --save portkey-ai
    ```
  </Tab>

  <Tab title="Python">
    ```sh theme={null}
    pip install portkey-ai
    ```
  </Tab>
</Tabs>

### 2. Initialize Portkey with the Virtual Key

To use SiliconFlow with Portkey, [get your API key from here](https://siliconflow.cn/), then add it to Portkey to create the virtual key.

<Tabs>
  <Tab title="NodeJS SDK">
    ```javascript theme={null}
    import Portkey from 'portkey-ai'

    const portkey = new Portkey({
        apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
        virtualKey: "VIRTUAL_KEY" // Your Silicon Flow
    })
    ```
  </Tab>

  <Tab title="Python SDK">
    ```python theme={null}
    from portkey_ai import Portkey

    portkey = Portkey(
        api_key="PORTKEY_API_KEY",  # Replace with your Portkey API key
        virtual_key="VIRTUAL_KEY"   # Replace with your virtual key for SiliconFlow
    )
    ```
  </Tab>
</Tabs>

### 3. Invoke Chat Completions with SiliconFlow

Use the Portkey instance to send requests to SiliconFlow. You can also override the virtual key directly in the API call if needed.

<Tabs>
  <Tab title="NodeJS SDK">
    ```javascript theme={null}
    const chatCompletion = await portkey.chat.completions.create({
        messages: [{ role: 'user', content: 'Say this is a test' }],
        model: 'deepseek-ai/DeepSeek-V2-Chat',
    });
    console.log(chatCompletion.choices);
    ```
  </Tab>

  <Tab title="Python SDK">
    ```python theme={null}
    completion = portkey.chat.completions.create(
        messages= [{ "role": 'user', "content": 'Say this is a test' }],
        model= 'deepseek-ai/DeepSeek-V2-Chat'
    )
    print(completion)
    ```
  </Tab>
</Tabs>

## Managing SiliconFlow Prompts

You can manage all prompts to SiliconFlow in the [Prompt Library](/product/prompt-library). All the current models of SiliconFlow are supported and you can easily start testing different prompts.

Once you're ready with your prompt, you can use the `portkey.prompts.completions.create` interface to use the prompt in your application.

The complete list of features supported in the SDK are available on the link below.

<Card title="SDK Reference" icon="code" href="/api-reference/portkey-sdk-client">
  Explore the Portkey SDK Client documentation
</Card>

You'll find more information in the relevant sections:

1. [Add metadata to your requests](/product/observability/metadata)
2. [Add gateway configs to your SiliconFlow requests](/product/ai-gateway/configs)
3. [Tracing SiliconFlow requests](/product/observability/traces)
4. [Setup a fallback from OpenAI to SiliconFlow APIs](/product/ai-gateway/fallbacks)
