Portkey Integration with Phidata

Portkey is a 2-line upgrade to make your Phidata agents reliable, cost-efficient, and fast.

Portkey adds 4 core production capabilities to any Phidata agent:

  1. Routing to 200+ LLMs
  2. Making each LLM call more robust
  3. Full-stack tracing & cost, performance analytics
  4. Real-time guardrails to enforce behavior

Getting Started

  1. Install Required Packages:
pip install phidata portkey-ai
  1. Configure Phidata with Portkey:
from phi.llm.openai import OpenAIChat
from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

llm = OpenAIChat(
     base_url=PORTKEY_GATEWAY_URL,
     api_key="OPENAI_API_KEY", #Replace with Your OpenAI Key
     default_headers=createHeaders(
         provider="openai",
         api_key=PORTKEY_API_KEY  # Replace with your Portkey API key
     )
 )

Generate your API key in the Portkey Dashboard.

And, that’s it! With just this, you can start logging all of your Phidata requests and make them reliable.

  1. Let’s Run your Agent
from phi.agent import Agent

agent = Agent(
    llm=llm,
    description="You help people with their health and fitness goals.",
    instructions=["Recipes should be under 5 ingredients"],
)
# -*- Print a response to the client
agent.print_response("Share a breakfast recipe.", markdown=True)

Here’s the output from your Agent’s run on Portkey’s dashboard.

Key Features

Portkey offers a range of advanced features to enhance your Phidata agents. Here’s an overview:

FeatureDescription
🌐 Multi-LLM IntegrationAccess 200+ LLMs with simple configuration changes
🛡️ Enhanced ReliabilityImplement fallbacks, load balancing, retries, and much more
📊 Advanced MetricsTrack costs, tokens, latency, and 40+ custom metrics effortlessly
🔍 Detailed Traces and LogsGain insights into every agent action and decision
🚧 GuardrailsEnforce agent behavior with real-time checks on inputs and outputs
🔄 Continuous OptimizationCapture user feedback for ongoing agent improvements
💾 Smart CachingReduce costs and latency with built-in caching mechanisms
🔐 Enterprise-Grade SecuritySet budget limits and implement fine-grained access controls

Colab Notebook

For a hands-on example of integrating Portkey with Phidata, check out our notebook:

Advanced Features

Interoperability

Easily switch between 200+ LLMs by changing the provider and API key in your configuration.

Example: Switching from OpenAI to Azure OpenAI

config = [
    {
        "api_key": "api-key",
        "model": "gpt-3.5-turbo",
        "base_url": PORTKEY_GATEWAY_URL,
        "api_type": "openai",
        "default_headers": createHeaders(
            api_key="YOUR_PORTKEY_API_KEY",
            provider="azure-openai",
            virtual_key="AZURE_VIRTUAL_KEY"
        )
    }
]

Reliability

Implement fallbacks, load balancing, and automatic retries to make your agents more resilient.

portkey_config = {
  "retry": {
    "attempts": 5
  },
  "strategy": {
    "mode": "loadbalance"  # Options: "loadbalance" or "fallback"
  },
  "targets": [
    {
      "provider": "openai",
      "api_key": "OpenAI_API_Key"
    },
    {
      "provider": "anthropic",
      "api_key": "Anthropic_API_Key"
    }
  ]
}

Metrics

Agent runs are complex. Portkey automatically logs 40+ comprehensive metrics for your AI agents, including cost, tokens used, latency, etc. Whether you need a broad overview or granular insights into your agent runs, Portkey’s customizable filters provide the metrics you need.

Comprehensive Logging

Access detailed logs and traces of agent activities, function calls, and errors. Filter logs based on multiple parameters for in-depth analysis.

Guardrails

Phidata agents, while powerful, can sometimes produce unexpected or undesired outputs. Portkey’s Guardrails feature helps enforce agent behavior in real-time, ensuring your Phidata agents operate within specified parameters. Verify both the inputs to and outputs from your agents to ensure they adhere to specified formats and content guidelines.

Learn more about Portkey’s Guardrails here.

Continuous Improvement

Capture qualitative and quantitative user feedback on your requests to continuously enhance your agent performance.

Caching

Reduce costs and latency with Portkey’s built-in caching system.

portkey_config = {
 "cache": {
    "mode": "semantic"  # Options: "simple" or "semantic"
 }
}

Security and Compliance

Set budget limits on provider API keys and implement fine-grained user roles and permissions for both your application and the Portkey APIs.

Additional Resources

For more information on using these features and setting up your Config, please refer to the Portkey documentation.