LlamaIndex (Python)

Portkey x LlamaIndex 集成为基于 LlamaIndex 构建的应用程序带来了先进的 AI 网关 功能、全栈 可观察性提示管理

简而言之,Portkey 扩展了熟悉的 OpenAI 架构,使 Llamaindex 能够与 200+ LLMs 一起使用,无需为每个提供者导入不同的类或单独配置代码。Portkey 使您的 Llamaindex 应用程序 可靠快速具有成本效益

开始使用

1. 安装 Portkey SDK

pip install -U portkey-ai

2. 导入必要的类和函数

像往常一样导入 Llamaindex 中的 OpenAI 类,以及 Portkey 的辅助函数 createHeadersPORTKEY_GATEWAY_URL

from llama_index.llms.openai import OpenAI
from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

3. 配置模型详细信息

使用 Portkey 的 配置对象架构 配置您的模型详细信息。在这里,您可以定义提供者和模型名称、模型参数、设置后备、重试等。

config = {
    "provider":"openai",
    "api_key":"YOUR_OPENAI_API_KEY",
    "override_params": {
        "model":"gpt-4o",
        "max_tokens":64
    }
}

4. 将配置详情传递给 OpenAI 客户端,带上必要的头信息

示例:OpenAI

以下是使用 completechat 方法的基本集成示例,包含 streaming 的开启和关闭。

assistant: Arrr, matey! They call me Captain Barnacle Bill, the most colorful pirate to ever sail the seven seas! With a parrot on me shoulder and a treasure map in me hand, I'm always ready for adventure! What be yer name, landlubber?


启用 Portkey 功能

通过将您的 LlamaIndex 请求路由通过 Portkey,您可以访问以下生产级功能:

  1. 互操作性:以最小的代码更改调用各种 LLM,如 Anthropic、Gemini、Mistral、Azure OpenAI、Google Vertex AI 和 AWS Bedrock。

  2. 缓存:通过将过去的响应存储在 Portkey 缓存中来加速您的请求并节省 LLM 调用的费用。可以选择简单缓存模式和语义缓存模式。

  3. 可靠性:在不同的 LLM 或提供者之间设置后备,平衡多个实例或 API 密钥之间的请求负载,设置自动重试和请求超时。

  4. 可观察性:Portkey 自动记录所有请求的关键信息,包括成本、使用的令牌、响应时间、请求和响应体等。发送自定义元数据和追踪 ID,以便进行更好的分析和调试。

  5. 提示管理:将 Portkey 用作集中式中心,以存储、版本化和实验多个 LLM 的提示,并在您的 LlamaIndex 应用中无缝检索,以便轻松集成。

  6. 持续改进:通过捕获用户对您请求的定性和定量反馈来改进您的 LlamaIndex 应用。

  7. 安全与合规:对提供者 API 密钥设置预算限制,并为应用程序和 Portkey API 实施细粒度的用户角色和权限。

这些功能大部分由 Portkey 的配置架构 驱动。在 Portkey 应用中,我们使您能够轻松地 创建管理版本 您的配置,以便您可以在 Llamaindex 中轻松引用它们。

在 Portkey 应用中保存配置

前往 Portkey 应用中的配置标签,您可以在这里保存各种提供者配置以及可靠性和缓存功能。每个配置都有一个相关的 slug,您可以在 Llamaindex 代码中引用它。

覆盖已保存的配置

如果您想在 LlamaIndex 代码中使用 Portkey 应用的已保存配置,但需要在发出请求之前修改某些部分,您可以轻松地使用 Portkey 的 Configs API 来实现。这种方法允许您利用已保存配置的便利,同时仍然可以根据您的特定需求进行调整。

以下是如何使用 Configs API 获取已保存配置并覆盖 model 参数的示例:

在这个示例中:

  1. 我们定义了一个辅助函数 get_customized_config,该函数接受 config_slugmodel 作为参数。

  2. 在函数内部,我们向 Portkey Configs API 端点发出 GET 请求,以使用提供的 config_slug 获取已保存的配置。

  3. 我们从 API 响应中提取 config 对象。

  4. 我们在配置的 override_params 部分更新提供的 custom_modelmodel 参数。

  5. 最后,我们返回自定义配置。

然后,我们可以在初始化 LlamaIndex 的 OpenAI 客户端时使用这个自定义配置,确保我们的特定 model 覆盖应用于已保存的配置。

有关在 Portkey 中使用配置的更多详细信息,请参考 配置文档


1. 互操作性 - 调用 Anthropic、Gemini、Mistral 等

现在我们已经启动了 OpenAI 的代码,接下来看看如何使用 Portkey 在多个 LLM 之间发送请求 - 我们将展示 AnthropicGeminiMistral。有关支持的提供商和 LLM 的完整列表,请查看 此文档

切换提供商只需 更改 3 行代码:

  1. 更改 provider name

  2. 更改 API key,以及

  3. 更改 model name

调用 Azure、Google Vertex、AWS Bedrock

我们建议将您的云详细信息保存到 Portkey vault 并获取相应的虚拟密钥。

在此查看虚拟密钥文档

调用本地或私有托管的模型,例如 Ollama

查看 Ollama 的 Portkey 文档其他私有托管模型

在此处查看 Portkey 支持的所有提供者的完整列表.


2. 缓存

通过将过去的响应存储在 Portkey 缓存中,您可以加快请求速度并节省 LLM 请求的费用。缓存模式有 2 种:

  • 简单模式: 完全匹配请求。非常适合重复、相同的提示。适用于 所有模型,包括图像生成模型。

  • 语义模式: 匹配语义上相似的请求的响应。非常适合去噪带有额外介词、代词等的请求。

要启用 Portkey 缓存,只需将 cache 参数添加到您的 config object 中。

有关更多缓存设置,请查看此处的文档.


3. 可靠性

在不同的 LLM 或提供商之间设置后备方案,跨多个实例或 API 密钥进行负载均衡,设置自动重试或请求超时 - 所有这些都通过 Configs 设置。

深入探索每个功能的文档 - 后备方案负载均衡重试超时

4. 可观察性

Portkey 自动记录您请求的所有关键信息,包括成本、使用的令牌、响应时间、请求和响应体等。

使用 Portkey,您还可以在每个请求中发送自定义元数据,以进一步细分日志,以便进行更好的分析。同样,您也可以将多个请求追踪到单个追踪 ID,并在 Portkey 日志中单独过滤或查看它们。

自定义元数据和追踪 ID 信息在 default_headers 中发送。

Portkey 为每个日志单独显示这些详细信息:

查看可观察性文档。


5. 提示管理

Portkey 具有先进的提示平台,专为更好的提示工程而设计。使用 Portkey,您可以:

  • 存储具有访问控制和版本控制的提示: 将所有提示集中存放,轻松跟踪历史变化,并为您的团队管理编辑/查看权限。

  • 参数化提示: 在您的提示中定义变量和 mustache-approved 标签,允许在调用 LLM 时动态插入值。这使得您的提示更加灵活和可重用。

  • 在沙盒环境中实验: 快速迭代不同的 LLM 和参数,以找到适合您用例的最佳组合,而无需修改您的 LlamaIndex 代码。

下面是如何在您的 LlamaIndex 应用程序中利用 Portkey 的提示管理:

  1. 在 Portkey 应用程序中创建您的提示模板,并保存以获取相关的 Prompt ID

  2. 在发起 Llamaindex 请求之前,使用 Portkey SDK 渲染提示模板

  3. 转换检索到的提示以兼容 LlamaIndex 并发送请求!

示例:在 LlamaIndex 中使用 Portkey 提示模板

在此处查看提示管理文档


6. 持续改进

现在您知道如何追踪和记录您的 Llamaindex 请求到 Portkey,您还可以开始收集用户反馈以改善您的应用程序!

您可以使用 portkey.feedback.create 方法将定性和定量反馈附加到任何 trace ID

查看反馈文档以深入了解


7. 安全性与合规性

当您为您的 Llamaindex 应用程序增加更多团队成员时,权限管理、预算控制和访问管理可能会变得混乱!使用 Portkey,您可以为提供的 API 密钥设置 预算限制,并实施 细粒度用户角色权限 来:

  • 控制访问:根据团队成员的角色和职责,限制他们对特定功能、配置或 API 端点的访问。

  • 管理成本:为 API 密钥设置预算限制,以防止意外支出,并确保您的 LLM 使用保持在分配的预算范围内。

  • 确保合规性:实施严格的安全政策和审计记录,以维护与行业法规的合规性并保护敏感数据。

  • 简化入职:通过为新团队成员分配适当的角色和权限,简化入职流程,消除共享敏感 API 密钥或秘密的需要。

  • 监控使用情况:通过全面的监控和报告,获得对团队 LLM 使用情况的可见性,跟踪成本,并识别潜在的安全风险或异常。

在此阅读有关 Portkey 的安全性和企业产品的更多信息.


加入 Portkey 社区

加入 Portkey Discord,与其他从业者联系,讨论您的 LlamaIndex 项目,并获得故障排除的帮助。

Discord 链接

有关每个功能及其使用方法的更详细信息,请参阅 Portkey 文档.

Last updated