首页 / 资讯中心 / 文章详情

Sealos Devbox 基础教程:用 Cursor 从零开发一个完整 Python 项目并接入 TaoToken

Sealos Devbox 基础教程:用 Cursor 从零开发一个完整 Python 项目并接入 TaoToken ★ FEATURED ARTICLE
1. 为什么要在 Sealos Devbox 里用 Cursor 写 Python 项目Sealos Devbox 是一个云端开发环境你在浏览器里点几下就能拿到一台带 Python、Go、Node.js 等运行时的容器代码写完直接能通过外网地址访问不用自己买服务器、配 Nginx、折腾 HTTPS 证书。Cursor 则是目前用起来最顺手的 AI 编辑器能读你整个项目上下文帮你补全、重构、写测试。把这两个东西拼在一起再通过 TaoToken 的统一 Key 接入大模型能力就是一套从「写代码」到「跑起来」再到「调模型」的完整链路。这篇教程面向的是刚接触云端开发环境、想快速把一个 Python 小项目跑通并接入大模型接口的人。你不需要提前装 Python不需要懂 Docker只要有一个浏览器和本地装好的 Cursor 就能跟着做。我会把每一步的命令、配置文件、验证方式都写清楚包括我实际踩过的坑比如环境变量没生效、Cursor 连不上远程容器、请求返回 401 这些常见问题。整篇内容围绕一个最小可运行的 Python 项目展开在 Devbox 里创建项目用 Cursor 打开并写一个调用大模型接口的脚本通过 TaoToken 的 API 通道发一次请求看到模型返回内容就算成功。过程中会给出config.toml和settings.json的配置骨架以及环境变量的设置方法。2. TaoToken 前置准备拿到统一 Key 和 API 地址TaoToken 做的事情是把多家模型的调用方式统一成一套 OpenAI 兼容的接口。你只需要一个 Key、一个 Base URL就能在代码里切换不同模型不用为每个厂商单独写一套 SDK。对于在 Devbox 里做快速验证来说这能省掉大量配置时间。2.1 注册并创建 API Key打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册登录后进入控制台。在控制台左侧找到 API Keys 页面点创建复制生成的 Key。这个 Key 只显示一次建议先粘到本地临时文件里。API 的基础地址是 https://taotoken.net/api 注意这个地址后面不加 UTM 参数代码里直接用它作为base_url。2.2 确认你要用的模型名在控制台的模型列表里能看到当前可用的模型标识比如常见的对话模型。记下你要调用的那个模型名后面写进代码的model字段。不同模型的能力和计费不一样做验证时选一个响应快的就行。注意Key 不要硬编码进提交到 Git 的代码里。后面我会用环境变量的方式管理Devbox 的环境变量面板可以直接配。2.3 在 Devbox 里配置环境变量进入 Sealos Devbox 项目后找到环境变量配置入口添加两个变量变量名值TAOTOKEN_API_KEY你复制的 KeyTAOTOKEN_BASE_URLhttps://taotoken.net/api保存后重启一下 Devbox 容器让变量生效。这一步很多人会忘导致代码里读不到 Key 而报 401。3. 在 Devbox 创建 Python 项目并用 Cursor 打开3.1 创建 Devbox 项目登录 Sealos 后进入 Devbox点新建项目。运行时选 Python版本选 3.11 或更高。项目名随便起比如taotoken-demo。创建完成后Devbox 会给你一个容器和默认的外网访问地址。在项目操作列里找到 Cursor 图标点击后选择 Open Cursor。本地 Cursor 会自动拉起并提示安装 Devbox 推荐的插件。点 Install Extension and Open URI等插件装完按钮变成 Disable 或 Uninstall 就说明好了。3.2 项目结构初始化在 Cursor 里打开集成终端左下角右键空白处选 Open in integrated Terminal确认当前目录是项目根目录。创建几个基础文件mkdir -p app touch app/main.py touch requirements.txt touch entrypoint.sh touch .enventrypoint.sh是 Devbox 启动时执行的脚本负责装依赖和启动应用。requirements.txt放 Python 依赖。.env放本地开发用的环境变量注意把它加进.gitignore。3.3 写 requirements.txtopenai1.30.0 python-dotenv1.0.0这里用官方的openai库因为 TaoToken 的接口是 OpenAI 兼容的直接用这个库最省事。python-dotenv用来在本地读取.env文件。3.4 写 entrypoint.sh#!/bin/bash set -e python3 -m venv venv source venv/bin/activate pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ python3 app/main.py给脚本加执行权限chmod x entrypoint.shset -e让脚本在任何一步失败时立即退出方便排查。用阿里云镜像装依赖在国内网络下会快很多。4. 可复制配置config.toml 与 settings.json 骨架Cursor 支持通过配置文件定制行为Devbox 项目里也可以放一份项目级配置让团队里其他人打开时行为一致。4.1 Cursor 的 settings.json 骨架在项目根目录创建.cursor/settings.json{ python.defaultInterpreterPath: ${workspaceFolder}/venv/bin/python, python.terminal.activateEnvironment: true, editor.formatOnSave: true, editor.tabSize: 4, files.exclude: { **/__pycache__: true, **/venv: true }, terminal.integrated.env.linux: { TAOTOKEN_BASE_URL: https://taotoken.net/api } }python.defaultInterpreterPath指向虚拟环境里的解释器这样 Cursor 的补全和跳转才能识别你装的包。files.exclude把venv和缓存目录藏起来侧边栏会清爽很多。4.2 项目级 config.toml 骨架在项目根目录创建config.toml[app] name taotoken-demo host 0.0.0.0 port 8080 [llm] base_url https://taotoken.net/api model gpt-4o-mini timeout 30 max_tokens 512 [log] level INFO这个文件用 Python 的tomllib3.11 自带读取。把模型名、超时、端口这些可变参数抽出来改的时候不用动代码。4.3 读取配置的代码在app/main.py里写import os import tomllib from pathlib import Path from openai import OpenAI from dotenv import load_dotenv load_dotenv() def load_config(): with open(Path(__file__).parent.parent / config.toml, rb) as f: return tomllib.load(f) def build_client(cfg): api_key os.environ.get(TAOTOKEN_API_KEY) if not api_key: raise RuntimeError(TAOTOKEN_API_KEY 未设置) return OpenAI( api_keyapi_key, base_urlcfg[llm][base_url], timeoutcfg[llm][timeout], ) def chat(client, cfg, prompt): resp client.chat.completions.create( modelcfg[llm][model], messages[ {role: system, content: 你是一个简洁的助手。}, {role: user, content: prompt}, ], max_tokenscfg[llm][max_tokens], ) return resp.choices[0].message.content if __name__ __main__: cfg load_config() client build_client(cfg) answer chat(client, cfg, 用一句话说明什么是环境变量) print(模型返回, answer)这段代码做了三件事从config.toml读配置从环境变量读 Key构造 OpenAI 客户端并发一次请求。base_url指向 TaoToken 的 API 地址Key 从环境变量拿不写死在代码里。5. 验证请求跑通一次模型调用5.1 本地启动在 Cursor 终端里执行./entrypoint.sh第一次运行会创建虚拟环境并装依赖需要等一两分钟。装完后脚本会执行app/main.py如果一切正常终端会打印出模型返回的一句话。如果看到类似下面的输出说明接入生效了模型返回 环境变量是操作系统或程序运行时用来存储配置信息的一组键值对。5.2 在 Devbox 外网地址验证Devbox 默认会把容器端口映射到外网。如果你想让这个脚本变成一个 HTTP 服务可以加一个简单的 Flask 或 FastAPI 入口。这里给一个最小 FastAPI 版本追加到app/main.pyfrom fastapi import FastAPI from pydantic import BaseModel import uvicorn api FastAPI() class AskBody(BaseModel): prompt: str api.post(/ask) def ask(body: AskBody): cfg load_config() client build_client(cfg) return {answer: chat(client, cfg, body.prompt)} if __name__ __main__: cfg load_config() uvicorn.run(api, hostcfg[app][host], portcfg[app][port])记得在requirements.txt里加上fastapi和uvicorn。重启后用 Devbox 给的外网地址加/ask路径测试curl -X POST http://你的devbox外网地址/ask \ -H Content-Type: application/json \ -d {prompt:你好介绍一下你自己}返回 JSON 里带answer字段就说明整条链路通了Devbox 跑服务Cursor 写代码TaoToken 提供模型能力。5.3 用模型对话页面做交叉验证如果你不想写代码验证也可以直接打开模型对话页面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 在网页里发一条消息确认 Key 和模型都正常。网页能通、代码也能通就排除了 Key 本身的问题。6. 本篇常见错误排查6.1 报 401 Unauthorized最常见的原因是环境变量没生效。Devbox 里配了变量但没重启容器或者本地.env文件没被load_dotenv()读到。检查方法在代码里打印os.environ.get(TAOTOKEN_API_KEY)的前几位确认不是None。另外注意 Key 前后不要有空格复制时容易带上换行。6.2 报 Connection refused 或超时先确认base_url写的是https://taotoken.net/api不要多加斜杠或路径。如果本地网络访问不了检查 Devbox 容器的出网策略。超时时间在config.toml的timeout字段调大一点比如 60。6.3 Cursor 连不上 Devbox 容器Open Cursor 后如果终端里命令执行报错先看 Cursor 左下角是否显示已连接到远程。插件没装完会导致 URI 打不开重新点一次 Install Extension and Open URI。如果还是不行在 Devbox 页面重新生成一次连接信息。6.4 模型名写错导致 404config.toml里的model字段必须和控制台里看到的模型标识完全一致大小写敏感。不确定的话先用模型对话页面选一个模型看它显示的标识是什么。6.5 依赖装不上entrypoint.sh里用了阿里云镜像如果某个包在镜像里没有会报找不到。可以临时去掉-i参数用默认源重试。另外确认requirements.txt里没有拼错的包名。7. 接下来怎么走跑通这次请求之后你可以把chat函数换成流式输出或者把 FastAPI 服务扩展成带前端页面的聊天工具。如果打算长期在这个项目上做编码和 Agent 开发可以了解一下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它针对持续调用场景做了额度优化。需要管理多个 Key 或查看用量去控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各语言的调用示例。如果你用 Claude Code 或 Anthropic 风格的接口参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_codeutm_campaignrewrite 。我自己的习惯是每接一个新模型先写一个十行的脚本发一次请求确认返回正常再往项目里集成。这样出问题时能快速定位是 Key、网络还是代码的问题。Devbox 的好处是环境随时能重建搞坏了删掉重来就行不用心疼本地配置。
阅读完成 · 觉得有帮助?
咨询建站