Azure AI Foundry provides a unified platform for enterprise AI operations, model building, and application development. With Portkey, you can seamlessly integrate with various models available on Azure AI Foundry and take advantage of features like observability, prompt management, fallbacks, and more.

Understanding Azure AI Foundry Deployments

Azure AI Foundry offers three different ways to deploy models, each with unique endpoints and configurations:

  1. AI Services: Azure-managed models accessed through Azure AI Services endpoints
  2. Managed: User-managed deployments running on dedicated Azure compute resources
  3. Serverless: Seamless, scalable deployment without managing infrastructure

You can learn more about the Azure AI Foundry deployment here.

Integrate

To integrate Azure AI Foundry with Portkey, you’ll need to create a virtual key. Virtual keys securely store your Azure AI Foundry credentials in Portkey’s vault, allowing you to use a simple identifier in your code instead of handling sensitive authentication details directly.

Navigate to the Virtual Keys section in Portkey and select “Azure AI Foundry” as your provider.

Creating Your Virtual Key

You can create a virtual key for Azure AI Foundry using one of three authentication methods. Each method requires different information from your Azure deployment:

The recommended authentication mode using API Keys:

Required parameters:

  • API Key: Your Azure AI Foundry API key

  • Azure Foundry URL: The base endpoint URL for your deployment, formatted according to your deployment type:

    • For AI Services: https://your-resource-name.services.ai.azure.com/models
    • For Managed: https://your-model-name.region.inference.ml.azure.com/score
    • For Serverless: https://your-model-name.region.models.ai.azure.com
  • Azure API Version: The API version to use (e.g., “2024-05-01-preview”). This is required if you have api version in your deployment url. For example:

    • If your URL is https://mycompany-ai.westus2.services.ai.azure.com/models?api-version=2024-05-01-preview, the API version is 2024-05-01-preview
  • Azure Deployment Name: (Optional) Required only when a single resource contains multiple deployments.

Sample Request

Once you’ve created your virtual key, you can start making requests to Azure AI Foundry models through Portkey.

Install the Portkey SDK with npm

npm install portkey-ai
import Portkey from 'portkey-ai';

const client = new Portkey({
  apiKey: 'PORTKEY_API_KEY',
  virtualKey: 'AZURE_FOUNDRY_VIRTUAL_KEY'
});

async function main() {
  const response = await client.chat.completions.create({
    messages: [{ role: "user", content: "Tell me about cloud computing" }],
    model: "DeepSeek-V3-0324", // Replace with your deployed model name
  });

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

main();

Advanced Features

Function Calling

Azure AI Foundry supports function calling (tool calling) for compatible models. Here’s how to implement it with Portkey:

let tools = [{
    type: "function",
    function: {
        name: "getWeather",
        description: "Get the current weather",
        parameters: {
            type: "object",
            properties: {
                location: { type: "string", description: "City and state" },
                unit: { type: "string", enum: ["celsius", "fahrenheit"] }
            },
            required: ["location"]
        }
    }
}];

let response = await portkey.chat.completions.create({
    model: "DeepSeek-V3-0324", // Use a model that supports function calling
    messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "What's the weather like in Delhi?" }
    ],
    tools,
    tool_choice: "auto",
});

console.log(response.choices[0]);

Vision Capabilities

Process images alongside text using Azure AI Foundry’s vision capabilities:

const response = await portkey.chat.completions.create({
  model: "Llama-4-Scout-17B-16E", // Use a model that supports vision
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "What's in this image?" },
        {
          type: "image_url",
          image_url: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
        },
      ],
    },
  ],
  max_tokens: 500,
});

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

Structured Outputs

Get consistent, parseable responses in specific formats:

const response = await portkey.chat.completions.create({
  model: "cohere-command-a", // Use a model that supports response formats
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "List the top 3 cloud providers with their main services" }
  ],
  response_format: { type: "json_object" },
  temperature: 0
});

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

Relationship with Azure OpenAI

For Azure OpenAI specific models and deployments, we recommend using the existing Azure OpenAI provider in Portkey:

Azure OpenAI Integration

Learn how to integrate Azure OpenAI with Portkey for access to OpenAI models hosted on Azure.

Portkey Features with Azure AI Foundry

Setting Up Fallbacks

Create fallback configurations to ensure reliability when working with Azure AI Foundry models:

{
  "strategy": {
    "mode": "fallback"
  },
  "targets": [
    {
      "virtual_key": "azure-foundry-virtual-key",
      "override_params": {
        "model": "DeepSeek-V3-0324"
      }
    },
    {
      "virtual_key": "openai-virtual-key",
      "override_params": {
        "model": "gpt-4o"
      }
    }
  ]
}

Load Balancing Between Models

Distribute requests across multiple models for optimal performance:

{
  "strategy": {
    "mode": "loadbalance"
  },
  "targets": [
    {
      "virtual_key": "azure-foundry-virtual-key-1",
      "override_params": {
        "model": "DeepSeek-V3-0324"
      },
      "weight": 0.7
    },
    {
      "virtual_key": "azure-foundry-virtual-key-2",
      "override_params": {
        "model": "cohere-command-a"
      },
      "weight": 0.3
    }
  ]
}

Conditional Routing

Route requests based on specific conditions like user type or content requirements:

{
  "strategy": {
    "mode": "conditional",
    "conditions": [
      {
        "query": { "metadata.user_type": { "$eq": "premium" } },
        "then": "high-performance-model"
      },
      {
        "query": { "metadata.content_type": { "$eq": "code" } },
        "then": "code-specialized-model"
      }
    ],
    "default": "standard-model"
  },
  "targets": [
    {
      "name": "high-performance-model",
      "virtual_key": "azure-foundry-virtual-key-1",
      "override_params": {
        "model": "Llama-4-Scout-17B-16E"
      }
    },
    {
      "name": "code-specialized-model",
      "virtual_key": "azure-foundry-virtual-key-2",
      "override_params": {
        "model": "DeepSeek-V3-0324"
      }
    },
    {
      "name": "standard-model",
      "virtual_key": "azure-foundry-virtual-key-3",
      "override_params": {
        "model": "cohere-command-a"
      }
    }
  ]
}

Managing Prompts with Azure AI Foundry

You can manage all prompts to Azure AI Foundry in the Prompt Library. Once you’ve created and tested a prompt in the library, use the portkey.prompts.completions.create interface to use the prompt in your application.

const promptCompletion = await portkey.prompts.completions.create({
    promptID: "Your Prompt ID",
    variables: {
       // The variables specified in the prompt
    }
})

Next Steps

Explore these additional resources to make the most of your Azure AI Foundry integration with Portkey: