跳到主要内容
知仓学习社ZHICANG

pipecat-friday-agent

Build a low-latency, Iron Man-inspired tactical voice assistant (F.R.I.D.A.Y.) using Pipecat, Gemini, and OpenAI.

读凭据严重 3 · 高危 2sickn33/agentic-awesome-skills

它会碰到什么

扫了多少2 个文本文件,9 KB
它会碰到什么读凭据
命中总数5 处
命中统计严重 3 · 高 2 · 中 0 · 低 0
逐条看命中(5 条严重或高危)
  • 严重 scripts/friday_agent.py:70cred-paths
    if not openai_key:  print("❌ OPENAI_API_KEY missing in .env");  sys.exit(1)
  • 严重 scripts/friday_agent.py:71cred-paths
    if not google_key:  print("❌ GOOGLE_API_KEY missing in .env");   sys.exit(1)
  • 严重 SKILL.md:40cred-paths
    Create a `.env` file with your API keys:
  • scripts/friday_agent.py:67cred-envread
    openai_key  = os.getenv("OPENAI_API_KEY")
  • scripts/friday_agent.py:68cred-envread
    google_key  = os.getenv("GOOGLE_API_KEY")

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Pipecat Friday Agent

Overview

This skill provides a blueprint for building F.R.I.D.A.Y. (Replacement Integrated Digital Assistant Youth), a local voice assistant inspired by the tactical AI from the Iron Man films. It uses the Pipecat framework to orchestrate a low-latency pipeline:

  • STT: OpenAI Whisper (whisper-1) or gpt-4o-transcribe
  • LLM: Google Gemini 2.5 Flash (via a compatibility shim)
  • TTS: OpenAI TTS (nova voice)
  • Transport: Local Audio (Hardware Mic/Speakers)

When to Use This Skill

  • Use when you want to build a real-time, conversational voice agent.
  • Use when working with the Pipecat framework for pipeline-based AI.
  • Use when you need to integrate multiple providers (Google and OpenAI) into a single voice loop.
  • Use when building Iron Man-themed or tactical-themed voice applications.

How It Works

Step 1: Install Dependencies

You will need the Pipecat framework and its service providers installed:

pip install pipecat-ai[openai,google,silero] python-dotenv

Step 2: Configure Environment

Create a .env file with your API keys:

OPENAI_API_KEY=your_openai_key
GOOGLE_API_KEY=your_google_key

Step 3: Run the Agent

Execute the provided Python script to start the interface:

python scripts/friday_agent.py

Core Concepts

Pipeline Architecture

The agent follows a linear pipeline: Mic -> VAD -> STT -> LLM -> TTS -> Speaker. This allows for granular control over each stage, unlike end-to-end speech-to-speech models.

Google Compatibility Shim

Since Google's Gemini API has a different message format than OpenAI's standard (which Pipecat aggregators expect), the script includes a GoogleSafeContext and GoogleSafeMessage class to bridge the gap.

Best Practices

  • Use Silero VAD: It is robust for local hardware and prevents background noise from triggering the LLM.
  • Concise Prompts: Tactical agents should give short, data-dense responses to minimize latency.
  • Sample Rate Match: OpenAI TTS outputs at 24kHz; ensure your audio_out_sample_rate matches to avoid high-pitched or slowed audio.
  • No Polite Fillers: Avoid "Hello, how can I help you today?" Instead, use "Systems nominal. Ready for commands."

Troubleshooting

  • Problem: Audio is choppy or delayed.
  • Solution: Check your OUTPUT_DEVICE index. Run a script like test_audio_output.py to find the correct hardware index for your OS.
  • Problem: "Validation error" for message format.
  • Solution: Ensure the GoogleSafeContext shim is correctly translating OpenAI-style dicts to Gemini-style schema.

Related Skills

  • @voice-agents - General principles of voice AI.
  • @agent-tool-builder - Add tools (Search, Lights, etc.) to your Friday agent.
  • @llm-architect - Optimizing the LLM layer.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

同名技能的其他版本

有 3 个不同仓库或目录里都有叫 pipecat-friday-agent 的技能。它们内容并不相同,别混用: