Build a Multi-Modal AI Agent with GPU-Bridge (LLMs + Image + Audio)

від

у

Створіть мультимодального штучного інтелектуального агента за допомогою GPU-Bridge (LLMs + зображення + аудіо)
https://ift.tt/05YHqSw

Створіть мультимодального АІ-агента за допомогою GPU-Bridge (LLMs + зображення + аудіо)

Мультимодальні АІ-агенти, які вміють бачити, чути, говорити та мислити, є одним із найцікавіших розвитку в області штучного інтелекту. У цьому туторіалі ми побудуємо один з нуля за допомогою GPU-Bridge.

До кінця ви отримаєте Python-агента, який:

  1. аналізує зображення за допомогою LLaVA-34B (візуальне Q&A)
  2. розшифровує аудіо за допомогою Whisper Large v3
  3. генерує відповідь за допомогою Llama 3.1 70B
  4. перетворює відповіду на мову за допомогою XTTS v2 клонування голосу

Усе працює на реальних графічних процесорах через API GPU-Bridge.

Передумови

pip install requests x402-client  # x402-client optional

Отримайте ключ API на gpubridge.xyz.

Повний агент

import requests, base64, json
from pathlib import Path

API_KEY = "your_gpu_bridge_api_key"
BASE_URL = "https://api.gpubridge.xyz/v1"
headers = {"Authorization: f"Bearer {API_KEY}", "Content-Type: "application/json"}

def gpu_run(service: str, input_data: dict) -> dict:
    resp = requests.post(f"{BASE_URL}/run", headers=headers,
                         json={"service: service, "input: input_data})
    resp.raise_for_status()
    return resp.json()

def analyze_image(image_path: str) -> str:
    """Use LLaVA 34B on RTX 4090 for visual Q&A."""
    with open(image_path, "rb") as f:
        img_b64 = base64.b64encode(f.read()).decode()
    result = gpu_run("llava-4090", {
        "image: img_b64,
        "question: "Describe this image in detail",
        "max_tokens": 500
    })
    return result["answer"]

def transcribe_audio(audio_path: str) -> str:
    """Use Whisper Large v3 on L4 GPU for transcription."""
    with open(audio_path, "rb") as f:
        audio_b64 = base64.b64encode(f.read()).decode()
    result = gpu_run("whisper-l4", {"audio: audio_b64, "language: "auto"})
    return result["text"]

def generate_response(image_desc: str, transcript: str) -> str:
    """Use Llama 3.1 70B on RTX 4090 to synthesize a response."""
    result = gpu_run("llm-4090", {
        "messages": [
            {"role": "system", "content": "You are a helpful multi-modal AI assistant."},
            {"role": "user", "content": f"Image: {image_desc}\n\nAudio: {transcript}\n\nProvide a helpful response."}
        ],
        "max_tokens": 600
    })
    return result["choices"][0]["message"]["content"]

def text_to_speech(text: str, output_path: str = "response.wav",
                   voice_sample: str = None) -> str:
    """Use XTTS v2 on L4 GPU for voice synthesis (with optional voice cloning)."""
    input_data = {"text: text, "language: "en"}
    if voice_sample and Path(voice_sample).exists():
        with open(voice_sample, "rb") as f:
            input_data["voice_sample"] = base64.b64encode(f.read()).decode()

    result = gpu_run("tts-l4", input_data)
    audio_bytes = base64.b64decode(result["audio"])
    with open(output_path, "wb") as f:
        f.write(audio_bytes)
    return output_path

# Run the complete pipeline
def run_agent(image_path: str, audio_path: str, voice_sample: str = None):
    print("📸 Step 1: Analyzing image with LLaVA-34B...")
    image_desc = analyze_image(image_path)

    print("🎤 Step 2: Transcribing audio with Whisper Large v3...")
    transcript = transcribe_audio(audio_path)

    print("🤖 Step 3: Generating response with Llama 3.1 70B...")
    response = generate_response(image_desc, transcript)

    print("🗣️ Step 4: Converting to speech with XTTS v2...")
    audio_out = text_to_speech(response, voice_sample=voice_sample)

    print(f"✅ Done! Response saved to: {audio_out}")
    return response

if __name__ == "__main__":
    result = run_agent("input_image.jpg", "input_audio.mp3")

Використання x402 для автономних платежів

Хочете, щоб ваш агент працював без будь-якої людської налаштування? Використовуйте протокол x402:

from x402.client import PaymentClient

# Замініть клієнта на основі заголовків на x402
x402_client = PaymentClient(
    private_key="0xYOUR_BASE_L2_PRIVATE_KEY",
    chain="base",
    max_payment="0.10"  # Безпекова межа за запитом
)

def gpu_run_x402(service: str, input_data: dict) -> dict:
    """x402-підтримуваний gpu_run — без потреби у API-ключі."""
    response = x402_client.request(
        "POST", f"{BASE_URL}/run",
        json= {"service: service, "input: input_data}
    )
    return response.json()

Просто замініть gpu_run на gpu_run_x402. Ваш агент тепер автономно оплачуватиме кожен виклик GPU за допомогою USDC на Base L2 (менше за <1 цент газу, приблизно 2 секунди підтвердження).

Аналіз витрат

Крок Сервіс Приблизна вартість
Аналіз зображення llava-4090 $0.02
Транскрипція аудіо (1 хв) whisper-l4 $0.005
Відповідь LLM llm-4090 $0.01
TTS (100 слів) tts-l4 $0.005
Всього за запуск ~$0.04

25 повних запусків конвеєра за $1.

Також доступно: MCP-сервер для Claude

GPU-Bridge також має MCP-сервер, який надає Claude прямий доступ до всіх 26 сервісів:

{
"mcpServers": {
"gpu-bridge": {
"command": "npx",
"args": ["-y", "@gpu-bridge/mcp-server"],
"env": { "GPUBRIDGE_API_KEY": "your_key" }
}
}
}

Посилання

Маєте запитання? залишайте їх у коментарях!

HI-FI News

через DEV Community https://dev.to

14 березня 2026 о 12:47 AM

March 14, 2026 at 12:47AM


Коментарі

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *