跳到主要内容

Pipecat

Pipecat 是用于实时语音和多模态 Agent 的开源 Python 框架。它把对话表示为由帧和服务组成的流水线。应用可以围绕自己的交互逻辑组合传输、语音识别、上下文管理、语言模型推理、语音合成和其他处理器。

得益于模块化服务,现有 Pipecat 流水线无需更改传输或语音组件,就能把文本语言模型请求路由到 AISIX。AISIX 为该环节提供模型别名、访问控制、路由和遥测,而 Pipecat 继续在应用流水线中传输音频、对话文本、模型文本和合成语音。

Pipecat 的 OpenAILLMService 支持自定义 OpenAI 基础 URL 和 API Key。请将它们分别设置为 AISIX 代理 API 根路径和调用方 Key,并在服务设置中使用 AISIX 模型别名。

前置条件

开始前,请准备以下内容:

  • 使用 Pipecat 的 Python 项目。
  • Pipecat 进程能够访问的运行中 AISIX 网关。
  • AISIX 调用方 API Key。
  • 调用方 Key 可以通过兼容 OpenAI 的 API访问的模型别名。

流水线还需要正常使用的传输、语音转文本和文本转语音服务。这些服务的凭证不会被 AISIX 调用方 Key 替换。

配置 OpenAILLMService

如果项目尚未安装 Pipecat 的 OpenAI 集成,请安装:

pip install "pipecat-ai[openai]"

设置网关值:

# AISIX_BASE_URL 包含 /v1,且末尾不带斜杠。
export AISIX_BASE_URL="https://gateway.example.com/v1"
export AISIX_API_KEY="YOUR_CALLER_API_KEY"
export AISIX_MODEL="voice-agent-prod"

使用当前基于设置的配置创建 LLM 服务:

import os

from pipecat.services.openai.llm import OpenAILLMService

llm = OpenAILLMService(
api_key=os.environ["AISIX_API_KEY"],
base_url=os.environ["AISIX_BASE_URL"],
settings=OpenAILLMService.Settings(
model=os.environ["AISIX_MODEL"],
),
)

在现有 Pipecat 流水线中,把 llm 放在用户上下文聚合器和 TTS 服务之间。模型设置使用 AISIX 别名,而不是上游服务提供方的模型 ID。

测试 LLM 连接

启动完整媒体流水线前,请先测试流式传输:

import asyncio
import os

from pipecat.processors.aggregators.llm_context import LLMContext
from pipecat.services.openai.llm import OpenAILLMService


async def main():
llm = OpenAILLMService(
api_key=os.environ["AISIX_API_KEY"],
base_url=os.environ["AISIX_BASE_URL"],
settings=OpenAILLMService.Settings(
model=os.environ["AISIX_MODEL"],
),
)

context = LLMContext(
messages=[
{
"role": "user",
"content": "Reply with one short sentence about voice gateways.",
}
]
)

stream = await llm.get_chat_completions(context)
async for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)

await llm.cleanup()


asyncio.run(main())

脚本应打印流式响应。AISIX 应为已配置的别名记录 POST /v1/chat/completions

最后一行清理代码会在这个独立冒烟测试中调用服务的公开清理钩子。在常规 Pipecat 应用中,流水线生命周期负责服务的启动和清理。

验证语音流水线

LLM 测试通过后,启动常规 Pipecat 应用并完成一轮语音对话。使用 Pipecat 指标分别查看语音识别、LLM 和语音合成延迟,并将 LLM 环节与 AISIX 请求指标进行比较。

如果独立 LLM 测试成功,但完整流水线没有发出语音,请检查上下文聚合器、TTS 服务和输出传输。AISIX 返回模型文本和工具调用,不会创建 Pipecat 音频帧。

后续步骤