一人公司的核心约束不是技术,而是时间、资金与注意力。因此,AI 产品不应从训练模型开始,而应从垂直场景 + API 编排 + 用量计费开始。你要做的不是“另一个 ChatGPT”,而是把大模型封装进一个具体工作流:法律合同审阅、跨境电商文案、独立开发者日志分析、个人知识库问答。只要有人愿意为结果付费,模型是 GPT、Claude 还是本地 Ollama 并不重要。
专业的一人公司 AI 产品通常采用以下最小架构:前端用 Next.js 部署在 Vercel;后端用 FastAPI 提供 API;向量检索用 Qdrant 或 Chroma;缓存与限流用 Redis;模型调用 OpenAI/Claude;计费用 Stripe。核心链路是:用户提问 → 向量化 → 检索私有知识 → 拼装上下文 → LLM 生成 → 记录 token → 超额计费。下面给出可运行的后端核心代码。
# main.py
import os, time
from fastapi import FastAPI, HTTPException, Header
from pydantic import BaseModel
from openai import OpenAI
from qdrant_client import QdrantClient
import redis
app = FastAPI()
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
qdrant = QdrantClient(url=os.environ["QDRANT_URL"], api_key=os.environ.get("QDRANT_API_KEY"))
r = redis.from_url(os.environ["REDIS_URL"], decode_responses=True)
class Ask(BaseModel):
question: str
user_id: str
def embed(text: str):
return client.embeddings.create(
model="text-embedding-3-small", input=text
).data[0].embedding
@app.post("/ask")
def ask(body: Ask, authorization: str = Header(...)):
# 每用户每分钟 20 次限流
key = f"rate:{body.user_id}:{int(time.time() // 60)}"
if r.incr(key) > 20:
raise HTTPException(429, "Rate limit exceeded")
r.expire(key, 60)
# 检索私有知识库
vector = embed(body.question)
hits = qdrant.search(
collection_name="docs", query_vector=vector, limit=5
)
context = "\n".join(h.payload["text"] for h in hits)
# 生成回答
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "仅根据上下文回答,不确定则说不知道。"},
{"role": "user", "content": f"上下文:\n{context}\n\n问题:{body.question}"}
],
temperature=0.2,
max_tokens=600,
)
answer = resp.choices[0].message.content
usage = resp.usage.total_tokens
# 记录用量,用于计费与成本分析
r.hincrby(f"usage:{body.user_id}", "tokens", usage)
r.hincrby(f"usage:{body.user_id}", "requests", 1)
return {"answer": answer, "tokens": usage}计费不必一开始就复杂。可以给每个用户每月 10 万免费 token,超出后按量收费。Stripe 的 PaymentIntent 可在一人公司场景下快速接入:
# billing.py
import os, redis, stripe
stripe.api_key = os.environ["STRIPE_SECRET_KEY"]
r = redis.from_url(os.environ["REDIS_URL"], decode_responses=True)
def charge_overage(user_id: str, free_tokens: int = 100_000):
used = int(r.hget(f"usage:{user_id}", "tokens") or 0)
if used <= free_tokens:
return
overage = used - free_tokens
amount = int(overage / 1000 * 0.2) # 每千 token 约 0.2 美分
stripe.PaymentIntent.create(
amount=amount, currency="usd",
customer=r.get(f"stripe_customer:{user_id}"),
description=f"AI 超额用量 {overage} tokens"
)部署同样要最小化。用 Docker Compose 把 API、Qdrant、Redis 串起来,一台 2C4G 云主机即可支撑早期用户:
# docker-compose.yml
services:
api:
build: .
ports: ["8000:8000"]
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- QDRANT_URL=http://qdrant:6333
- REDIS_URL=redis://redis:6379
depends_on: [qdrant, redis]
qdrant:
image: qdrant/qdrant:latest
ports: ["6333:6333"]
redis:
image: redis:7-alpine运营层面,一人公司必须把成本控制写成工程约束:相同问题走 Redis 缓存;embedding 用小模型;生成设置 max_tokens;批量任务放异步队列;监控每日 token 成本与毛利。增长层面,优先做垂直 SEO、公开知识库示例、免费额度与邮件自动化,而不是投广告。法律层面,明确隐私政策、数据保留周期与 AI 输出免责声明。
一人公司 AI 产品的护城河不是模型,而是数据飞轮、工作流嵌入与分发能力。先用最小架构跑通付费闭环,再逐步替换组件、优化成本。代码越少,你越有时间理解用户。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。