跳转到主要内容
Portkey CrewAI Header Image

简介

Portkey 通过提供以下生产就绪功能,增强 CrewAI,将您的实验性代理团队转变为强大的系统:
  • 对每个代理步骤、工具使用和交互的完整可观测性
  • 内置可靠性,包括故障转移、重试和负载均衡
  • 成本跟踪和优化,以管理您的 AI 开销
  • 通过单一集成访问 200 多个 LLM
  • 防护栏,确保代理行为安全合规
  • 版本控制的提示,以实现一致的代理性能

安装和设置

1

安装所需的包

pip install -U crewai portkey-ai

生成 API 密钥

Portkey 控制面板创建 Portkey API 密钥,可选择添加预算/速率限制。您还可以将可靠性、缓存等配置附加到此密钥。稍后将详细介绍。
3

使用 Portkey 配置 CrewAI

集成很简单——您只需更新 CrewAI 设置中的 LLM 配置
from crewai import LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

# Create an LLM instance with Portkey integration
gpt_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",  # We are using a Virtual key, so this is a placeholder
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_LLM_VIRTUAL_KEY",
        trace_id="unique-trace-id",               # Optional, for request tracing
    )
)

#Use them in your Crew Agents like this:

	@agent
	def lead_market_analyst(self) -> Agent:
		return Agent(
			config=self.agents_config['lead_market_analyst'],
			verbose=True,
			memory=False,
			llm=gpt_llm
		)

什么是虚拟密钥?Portkey 中的虚拟密钥将您的 LLM 提供商 API 密钥(OpenAI、Anthropic 等)安全地存储在加密保险库中。它们允许更简单的密钥轮换和预算管理。在此处了解有关虚拟密钥的更多信息

生产功能

1. 增强的可观测性

Portkey 为您的 CrewAI 代理提供全面的可观测性,帮助您准确了解每次执行过程中发生的情况。
  • 追踪
  • 日志
  • 指标和仪表盘
  • 元数据过滤
追踪提供您的团队执行的分层视图,显示 LLM 调用、工具调用和状态转换的序列。
# Add trace_id to enable hierarchical tracing in Portkey
portkey_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
        trace_id="unique-session-id"  # Add unique trace ID
    )
)

2. 可靠性 - 确保您的团队顺利运行

在生产中运行团队时,可能会出现问题——API 速率限制、网络问题或提供商中断。Portkey 的可靠性功能可确保您的代理即使在出现问题时也能顺利运行。通过使用 Portkey 配置,在 CrewAI 设置中启用故障转移很简单:
from crewai import LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

# Create LLM with fallback configuration
portkey_llm = LLM(
    model="gpt-4o",
    max_tokens=1000,
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        config={
            "strategy": {
                "mode": "fallback"
            },
            "targets": [
                {
                    "provider": "openai",
                    "api_key": "YOUR_OPENAI_API_KEY",
                    "override_params": {"model": "gpt-4o"}
                },
                {
                    "provider": "anthropic",
                    "api_key": "YOUR_ANTHROPIC_API_KEY",
                    "override_params": {"model": "claude-3-opus-20240229"}
                }
            ]
        }
    )
)

# Use this LLM configuration with your agents
如果 GPT-4o 请求失败,此配置将自动尝试 Claude,确保您的团队可以继续运行。

3. CrewAI 中的提示

Portkey 的提示工程工作室可帮助您创建、管理和优化 CrewAI 代理中使用的提示。您可以使用 Portkey 的提示渲染 API 动态获取和应用版本化提示,而不是硬编码提示或指令。
Prompt Playground Interface

在 Portkey 的提示库中管理提示

  • 提示游乐场
  • 使用提示模板
  • 提示版本控制
  • 变量的 Mustache 模板
提示游乐场是比较、测试和部署完美提示以供您的 AI 应用程序使用的地方。您可以在部署到生产环境之前,在这里试验不同的模型、测试变量、比较输出并完善您的提示工程策略。它允许您:
  1. 在使用代理之前迭代开发提示
  2. 使用不同的变量和模型测试提示
  3. 比较不同提示版本之间的输出
  4. 与团队成员协作进行提示开发
这种可视化环境使您更容易为 CrewAI 代理工作流中的每个步骤制作有效的提示。

提示工程工作室

了解有关 Portkey 提示管理功能的更多信息

4. 安全团队的防护栏

防护栏可确保您的 CrewAI 代理安全运行并在所有情况下做出适当响应。为什么要使用防护栏?CrewAI 代理可能会遇到各种故障模式:
  • 生成有害或不当内容
  • 泄露 PII 等敏感信息
  • 产生错误信息
  • 生成格式不正确的输出
Portkey 的防护栏为输入和输出增加了保护。实施防护栏
from crewai import Agent, LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

# Create LLM with guardrails
portkey_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
        config={
            "input_guardrails": ["guardrails-id-xxx", "guardrails-id-yyy"],
            "output_guardrails": ["guardrails-id-zzz"]
        }
    )
)

# Create agent with guardrailed LLM
researcher = Agent(
    role="Senior Research Scientist",
    goal="Discover groundbreaking insights about the assigned topic",
    backstory="You are an expert researcher with deep domain knowledge.",
    verbose=True,
    llm=portkey_llm
)
Portkey 的防护栏可以
  • 检测并编辑输入和输出中的 PII
  • 过滤有害或不当内容
  • 根据 Schema 验证响应格式
  • 对照事实真相检查幻觉
  • 应用自定义业务逻辑和规则

了解有关防护栏的更多信息

探索 Portkey 的防护栏功能,以增强代理安全性

5. 使用元数据进行用户跟踪

使用 Portkey 的元数据系统通过 CrewAI 代理跟踪单个用户。Portkey 中的元数据是什么?元数据允许您将自定义数据与每个请求关联起来,从而实现过滤、分段和分析。特殊的 _user 字段专为用户跟踪而设计。
from crewai import Agent, LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

# Configure LLM with user tracking
portkey_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
        metadata={
            "_user": "user_123",  # Special _user field for user analytics
            "user_tier": "premium",
            "user_company": "Acme Corp",
            "session_id": "abc-123"
        }
    )
)

# Create agent with tracked LLM
researcher = Agent(
    role="Senior Research Scientist",
    goal="Discover groundbreaking insights about the assigned topic",
    backstory="You are an expert researcher with deep domain knowledge.",
    verbose=True,
    llm=portkey_llm
)
按用户筛选分析使用元数据,您可以按用户筛选分析并按用户分析性能指标:

按用户筛选分析

这使得
  • 按用户成本跟踪和预算
  • 个性化用户分析
  • 团队或组织级别的指标
  • 特定环境监控(暂存与生产)

了解有关元数据的更多信息

探索如何使用自定义元数据来增强您的分析

6. 缓存以提高团队效率

实施缓存以提高 CrewAI 代理的效率和成本效益
  • 简单缓存
  • 语义缓存
from crewai import Agent, LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

# Configure LLM with simple caching
portkey_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
        config={
            "cache": {
                "mode": "simple"
            }
        }
    )
)

# Create agent with cached LLM
researcher = Agent(
    role="Senior Research Scientist",
    goal="Discover groundbreaking insights about the assigned topic",
    backstory="You are an expert researcher with deep domain knowledge.",
    verbose=True,
    llm=portkey_llm
)
简单缓存对输入提示执行精确匹配,缓存相同的请求以避免冗余模型执行。

7. 模型互操作性

CrewAI 支持多个 LLM 提供商,Portkey 通过统一接口提供对 200 多个 LLM 的访问,从而扩展了此功能。您可以在不更改核心代理逻辑的情况下轻松切换不同的模型
from crewai import Agent, LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

# Set up LLMs with different providers
openai_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_OPENAI_VIRTUAL_KEY"
    )
)

anthropic_llm = LLM(
    model="claude-3-5-sonnet-latest",
    max_tokens=1000,
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_ANTHROPIC_VIRTUAL_KEY"
    )
)

# Choose which LLM to use for each agent based on your needs
researcher = Agent(
    role="Senior Research Scientist",
    goal="Discover groundbreaking insights about the assigned topic",
    backstory="You are an expert researcher with deep domain knowledge.",
    verbose=True,
    llm=openai_llm  # Use anthropic_llm for Anthropic
)
Portkey 提供对来自以下提供商的 LLM 的访问,包括
  • OpenAI (GPT-4o, GPT-4 Turbo 等)
  • Anthropic (Claude 3.5 Sonnet, Claude 3 Opus 等)
  • Mistral AI (Mistral Large, Mistral Medium 等)
  • Google Vertex AI (Gemini 1.5 Pro 等)
  • Cohere (Command, Command-R 等)
  • AWS Bedrock (Claude, Titan 等)
  • 本地/私有模型

支持的提供商

查看 Portkey 支持的 LLM 提供商完整列表

为 CrewAI 设置企业治理

为什么要进行企业治理?如果您在组织内部使用 CrewAI,则需要考虑几个治理方面:
  • 成本管理:控制和跟踪跨团队的 AI 开支
  • 访问控制:管理哪些团队可以使用特定模型
  • 使用分析:了解 AI 在整个组织中的使用方式
  • 安全与合规:维护企业安全标准
  • 可靠性:确保所有用户获得一致的服务
Portkey 添加了一个全面的治理层来解决这些企业需求。让我们一步步实施这些控制。
1

创建虚拟密钥

虚拟密钥是 Portkey 管理您的 LLM 提供商 API 密钥的安全方式。它们提供必要的控制,例如:
  • API 使用的预算限制
  • 速率限制功能
  • 安全的 API 密钥存储
创建虚拟密钥:转到 Portkey App 中的虚拟密钥。保存并复制虚拟密钥 ID。
保存您的虚拟密钥 ID——下一步会用到。
2

创建默认配置

Portkey 中的配置定义了请求的路由方式,具有高级路由、故障转移和重试等功能。要创建您的配置:
  1. 转到 Portkey 控制面板中的配置
  2. 创建新配置,包含
    {
        "virtual_key": "YOUR_VIRTUAL_KEY_FROM_STEP1",
       	"override_params": {
          "model": "gpt-4o" // Your preferred model name
        }
    }
    
  3. 保存并记下配置名称,以供下一步使用
3

配置 Portkey API 密钥

现在创建 Portkey API 密钥并附加您在步骤 2 中创建的配置
  1. 转到 Portkey 中的API 密钥并创建新的 API 密钥
  2. 步骤 2 中选择您的配置
  3. 生成并保存您的 API 密钥
4

连接到 CrewAI

设置好带有所附配置的 Portkey API 密钥后,将其连接到您的 CrewAI 代理
from crewai import Agent, LLM
from portkey_ai import PORTKEY_GATEWAY_URL

# Configure LLM with your API key
portkey_llm = LLM(
    model="gpt-4o",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="YOUR_PORTKEY_API_KEY"
)

# Create agent with Portkey-enabled LLM
researcher = Agent(
    role="Senior Research Scientist",
    goal="Discover groundbreaking insights about the assigned topic",
    backstory="You are an expert researcher with deep domain knowledge.",
    verbose=True,
    llm=portkey_llm
)

步骤 1:实施预算控制和速率限制

虚拟密钥可在团队/部门级别对 LLM 访问进行细粒度控制。这有助于您
  • 设置预算限制
  • 使用速率限制防止意外的使用高峰
  • 跟踪部门支出

设置部门特定控制

  1. 导航到 Portkey 控制面板中的虚拟密钥
  2. 为每个部门创建新的虚拟密钥,并设置预算限制和速率限制
  3. 配置部门特定的限制

步骤 2:定义模型访问规则

随着您的 AI 使用规模扩大,控制哪些团队可以访问特定模型变得至关重要。Portkey 配置提供了此控制层,具有以下功能:

访问控制功能

  • 模型限制:限制对特定模型的访问
  • 数据保护:为敏感数据实施防护栏
  • 可靠性控制:添加故障转移和重试逻辑

示例配置

这是一个将请求路由到 OpenAI(特别是使用 GPT-4o)的基本配置
{
	"strategy": {
		"mode": "single"
	},
	"targets": [
		{
			"virtual_key": "YOUR_OPENAI_VIRTUAL_KEY",
			"override_params": {
				"model": "gpt-4o"
			}
		}
	]
}
在您的 Portkey 控制面板的配置页面上创建您的配置。
配置可以随时更新以调整控制,而不会影响正在运行的应用程序。

步骤 3:实施访问控制

创建用户专用 API 密钥,自动
  • 借助虚拟密钥跟踪每个用户/团队的使用情况
  • 应用适当的配置以路由请求
  • 收集相关元数据以过滤日志
  • 强制执行访问权限
通过Portkey App创建 API 密钥使用 Python SDK 的示例:
from portkey_ai import Portkey

portkey = Portkey(api_key="YOUR_ADMIN_API_KEY")

api_key = portkey.api_keys.create(
    name="engineering-team",
    type="organisation",
    workspace_id="YOUR_WORKSPACE_ID",
    defaults={
        "config_id": "your-config-id",
        "metadata": {
            "environment": "production",
            "department": "engineering"
        }
    },
    scopes=["logs.view", "configs.read"]
)
有关详细的密钥管理说明,请参阅 Portkey 文档

步骤 4:部署和监控

在将 API 密钥分发给您的团队成员后,您的企业就绪型 CrewAI 设置即可投入使用。现在,每个团队成员都可以使用其指定的 API 密钥,并具有适当的访问级别和预算控制。在 Portkey 控制面板中监控使用情况:
  • 按部门划分的成本跟踪
  • 模型使用模式
  • 请求量
  • 错误率

现已提供企业功能

您的 CrewAI 集成现在拥有
  • 部门预算控制
  • 模型访问治理
  • 使用跟踪和归因
  • 安全防护栏
  • 可靠性功能

常见问题

Portkey 通过全面的可观测性(追踪、日志、指标)、可靠性功能(故障转移、重试、缓存)和通过统一接口访问 200 多个 LLM,为 CrewAI 增加了生产就绪性。这使得调试、优化和扩展您的代理应用程序变得更容易。
是的!Portkey 可与现有 CrewAI 应用程序无缝集成。您只需使用启用 Portkey 的版本更新您的 LLM 配置代码。其余的代理和团队代码保持不变。
Portkey 支持所有 CrewAI 功能,包括代理、工具、人机交互工作流以及所有任务处理类型(顺序、层次结构等)。它增加了可观测性和可靠性,而不限制框架的任何功能。
是的,Portkey 允许您在团队中的多个代理之间使用一致的 trace_id 来跟踪整个工作流。这对于复杂的团队特别有用,您希望了解跨多个代理的完整执行路径。
Portkey 允许您向 LLM 配置添加自定义元数据,然后您可以使用这些元数据进行过滤。添加 crew_namecrew_typesession_id 等字段,可以轻松查找和分析特定的团队执行。
是的!Portkey 使用您自己的各种 LLM 提供商的 API 密钥。它将它们安全地存储为虚拟密钥,让您可以轻松管理和轮换密钥,而无需更改代码。

资源