技能 编程开发 Exa 部署指南

Exa 部署指南

v20260311
exa-deploy-integration
本指南帮助团队将基于 Exa 神经搜索的应用部署到 Vercel、Fly.io 与 Cloud Run,涵盖密钥配置、边缘函数、Docker 缓存、健康检查与常见错误处理,确保稳定上线。
获取技能
314 次下载
概览

Exa Deploy Integration

Overview

Deploy applications that use Exa's neural search API (api.exa.ai) to production. Covers API key management, deployment to Vercel and Docker, rate limit configuration, and caching strategies for search-heavy applications.

Prerequisites

  • Exa API key stored in EXA_API_KEY environment variable
  • Application using exa-js SDK or REST API
  • Platform CLI installed (vercel, docker, or gcloud)

Instructions

Step 1: Configure Secrets

# Vercel
vercel env add EXA_API_KEY production

# Docker
echo "EXA_API_KEY=your-key" >> .env.production

# Cloud Run
echo -n "your-key" | gcloud secrets create exa-api-key --data-file=-

Step 2: Vercel Edge Deployment

// api/search.ts
import Exa from "exa-js";

export const config = { runtime: "edge" };

export default async function handler(req: Request) {
  const exa = new Exa(process.env.EXA_API_KEY!);
  const { query, numResults } = await req.json();

  const results = await exa.searchAndContents(query, {
    type: "neural",
    numResults: numResults || 5,
    text: { maxCharacters: 500 },  # HTTP 500 Internal Server Error
  });

  return Response.json(results);
}

Step 3: Docker with Caching

FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000  # 3000: 3 seconds in ms
CMD ["node", "dist/index.js"]
// Search with Redis cache
import Exa from "exa-js";
import { Redis } from "ioredis";

const exa = new Exa(process.env.EXA_API_KEY!);
const redis = new Redis(process.env.REDIS_URL!);

async function cachedSearch(query: string, ttl = 3600) {  # 3600: timeout: 1 hour
  const cacheKey = `exa:${Buffer.from(query).toString("base64")}`;
  const cached = await redis.get(cacheKey);
  if (cached) return JSON.parse(cached);

  const results = await exa.searchAndContents(query, {
    type: "neural",
    numResults: 5,
  });

  await redis.set(cacheKey, JSON.stringify(results), "EX", ttl);
  return results;
}

Step 4: Health Check

export async function GET() {
  try {
    const exa = new Exa(process.env.EXA_API_KEY!);
    await exa.search("test", { numResults: 1 });
    return Response.json({ status: "healthy" });
  } catch {
    return Response.json({ status: "unhealthy" }, { status: 503 });  # HTTP 503 Service Unavailable
  }
}

Error Handling

Issue Cause Solution
Rate limited Too many requests Implement caching and request queuing
Empty results Query too specific Broaden search terms
API key invalid Key expired Regenerate at dashboard.exa.ai
Timeout Large content request Reduce maxCharacters or numResults

Examples

Deploy to Vercel

vercel env add EXA_API_KEY production && vercel --prod

Resources

Next Steps

For multi-environment setup, see exa-multi-env-setup.

Output

  • Configuration files or code changes applied to the project
  • Validation report confirming correct implementation
  • Summary of changes made and their rationale
信息
Category 编程开发
Name exa-deploy-integration
版本 v20260311
大小 3.71KB
更新时间 2026-03-12
语言