
MinIO API文档快速入门
“如果代码能自己写完,那程序员做什么?” 别慌——答案是用省下来的时间去喝咖啡、修 Bug,以及把更多灵感变成现实。
2025 年 8 月,Python__ 在 15 分钟内完成接入,并一步步解锁智能编程助手的完整技能树:
阅读完你将得到一份可直接 clone 的 GitHub 模板工程,以及生产级最佳实践 checklist。
— | ||||||||
---|---|---|---|---|---|---|---|---|
参数量 | 480B | — | — | |||||
上下文长度 | 128 k | 32 k | 200 k | |||||
中文语料占比 | 45 % | < 5 % | < 5 % | |||||
API 价格 | 限时免费 | $30 / 1M tokens | $15 / 1M tokens | |||||
开源模型权重 | ✅ | ❌ | ❌ | |||||
本地可商用 | ✅ Apache-2.0 | ❌ | ❌ |
一句话:免费、开源、128 k 超长上下文、对中文注释和中文变量名友好。 官网直达:https://qwenlm.github.io/zh/blog/qwen3-coder
终端执行(Linux/Mac):
export DASHSCOPE_API_KEY="刚才复制的KEY"
setx DASHSCOPE_API_KEY "刚才复制的KEY"
完成!全程不到 1 分钟。
python -m venv venv && source venv/bin/activate
pip install openai python-dotenv rich
.env
文件(永远不要硬编码密钥)DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxx
main.py
—— 3 行版本from openai import OpenAI
client = OpenAI(api_key="sk-xx", base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
print(client.chat.completions.create(model="qwen3-coder-plus", messages=[{"role":"user","content":"用Python写快排"}]).choices[0].message.content)
import os, sys
from openai import OpenAI
from rich.console import Console
from rich.markdown import Markdown
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
console = Console()prompt = " ".join(sys.argv[1:]) or "用Python写快排"
stream = client.chat.completions.create(
model="qwen3-coder-plus",
messages=[{"role": "user", "content": prompt}],
stream=True,
)for chunk in stream:
text = chunk.choices[0].delta.content or ""
console.print(text, end="")
保存后执行:
python main.py "写一个Flask Todo API"
终端实时渲染 Markdown 格式的代码,拷贝即可用。
场景:已有 utils.py
,光标停在 def hash_password(
,让 AI 补全函数体。
# partial.py
def hash_password(password: str) -> str:
# TODO: 加盐哈希
调用脚本:
from pathlib import Path
from openai import OpenAI
client = OpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
source = Path("partial.py").read_text()
resp = client.chat.completions.create(
model="qwen3-coder-plus",
messages=[
{"role": "system", "content": "你是安全专家,补全 TODO 并给出最佳实践。"},
{"role": "user", "content": source}
],
max_tokens=256,
)
print(resp.choices[0].message.content)
输出示例:
import bcrypt, secrets
def hash_password(password: str) -> str:
salt = bcrypt.gensalt(rounds=12)
return bcrypt.hashpw(password.encode('utf-8'), salt).decode('utf-8')
官方 CLI Qwen Code 一条命令生成整个工程:
npm install -g @qwen-code/qwen-code
qwen new --template flask --name bookstore
但如果你想 自定义模板(比如公司内部的 调用 API:
prompt = """
请生成一个FastAPI项目结构,要求:
1. 使用 SQLModel + asyncpg
2. 三层架构:routers/ services/ models/
3. 包含 Dockerfile 与 docker-compose.yml
4. 预置 pytest 示例
"""
返回的压缩包(Base64 解码后)可直接 unzip
运行。 完整脚本见 starter.py。
想让 AI 只读“你家的代码”? 用 Chroma 做向量库,两步搞定:
索引本地仓库
pip install chromadb
python build_index.py --repo ./my-project --output ./chroma_db
检索 + 生成
docs = chroma.similarity_search("如何登录鉴权")
context = "n".join(d.page_content for d in docs)
prompt = f"以下是我们现有代码:n{context}nn请在此基础上实现JWT登录。"
把 [prompt](https://prompts.explinks.com/)
喂给 Qwen3-Coder,即可生成与现有风格完全一致的代码。
settings.json 三行配置
"qwen-coder.apiKey": "${env:DASHSCOPE_API_KEY}",
"qwen-coder.baseURL": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"qwen-coder.model": "qwen3-coder-plus"
Cursor 已内置 OpenAI Compatible 模式: Settings → Models → Add → 填入 https://dashscope.aliyuncs.com/compatible-mode/v1
和 qwen3-coder-plus
。
通过 Continue 插件 支持: Preferences → Continue → OpenAI Compatible → 填同上参数即可。
示例架构:
FastAPI 中继服务要点:
structlog
+ rich
结构化输出redis
存相同 prompt 的结果 30 min,命中率 30 %asyncio.Semaphore(50)
控制并发,避免限流slowapi
按 IP 每分钟 60 次代码片段:
from fastapi import FastAPI, Request
from fastapi.responses import StreamingResponse
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
import redis.asyncio as redis
import os, json
from openai import AsyncOpenAI
limiter = Limiter(key_func=get_remote_address)
app = FastAPI()
app.state.limiter = limiter
app.add_exception_handler(429, _rate_limit_exceeded_handler)
r = redis.from_url("redis://localhost")client = AsyncOpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)@app.post("/v1/chat/completions")
@limiter.limit("60/minute")
async def chat(request: Request):
body = await request.json()
key = json.dumps(body, sort_keys=True)
cached = await r.get(key)
if cached:
return json.loads(cached)
resp = await client.chat.completions.create(**body)
await r.setex(key, 1800, resp.model_dump_json())
return resp
Dockerfile 见仓库 deploy/
目录。
Prompt 压缩: 删除无用注释、空行,节省 20 % tokens。
模型分层: 简单任务 qwen3-coder-turbo
,复杂任务再切 plus
,成本再降 50 %。
流式提前终止: 前端检测到用户按 Ctrl+C
立即 abort,减少无效输出。
— | ||||
---|---|---|---|---|
Invalid [API Key](https://www.explinks.com/blog/api-key-what-is-an-api-key/) |
环境变量未生效;echo $DASHSCOPE_API_KEY 确认 |
|||
model not found |
模型名拼错,应是 qwen3-coder-plus |
|||
Rate limit exceeded |
免费额度 1000 次/天用完;充值或提工单 | |||
Read timed out |
公司代理;启动加 -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=7890 |
.github/workflows/ai-fix.yml
name: AI Fix PR
on:
pull_request:
types: [opened, synchronize]
jobs:
fix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- run: pip install openai
- run: python scripts/ai_review.py
env:
DASHSCOPE_API_KEY: ${{ secrets.DASHSCOPE_API_KEY }}
ai_review.py
读取 diff,让 Qwen3-Coder 给出修复建议,并自动 commit。 完整脚本见仓库 .github/
。
Qwen3-Coder 的旅程刚刚开始,让我们一起把重复劳动交给 AI,把创造力留给自己。 官方文档:https://qwenlm.github.io/zh/blog/qwen3-coder
Happy Coding!