Node.js 快速开始
- AI 快速开始
- 完整开发指引
准备工作
在开始之前,请确保您已完成以下准备:
- 开通云开发环境:开通云开发环境
- 获取 API 访问凭证:在 CloudBase 控制台 获取环境 ID 和 API 密钥
Client
配置你的 AI 工具以连接 CloudBase 能力 支持本地与托管两种连接方式,详见 连接方式。
步骤 1:安装 / 配置 CloudBase
步骤 2:和 AI 对话
在 AI 对话中依次输入以下内容:
prompt
安装 CloudBase Skills:命令 npx skills add tencentcloudbase/cloudbase-skills -y使用 CloudBase Skills: 使用 CloudBase Skills:在 Node.js 后端服务中集成 CloudBase,包括数据库和云存储准备工作
在开始之前,请确保您已完成以下准备:
- 开通云开发环境:开通云开发环境
- 获取 API 访问凭证:在 CloudBase 控制台 获取环境 ID 和 API 密钥
更多详情请参考:Node.js 完整文档
安装 SDK
@cloudbase/node-sdk 可以让您在 Node.js 服务端使用 JavaScript/TypeScript 访问 CloudBase 服务和资源。
npm
npm i @cloudbase/node-sdk dotenv
yarn
yarn add @cloudbase/node-sdk dotenv
pnpm
pnpm add @cloudbase/node-sdk dotenv
初始化 SDK
新增如下代码到您的 Node.js 项目
./utils/cloudbase.js
const cloudbaseSDK = require("@cloudbase/node-sdk");
require("dotenv").config();
const cloudbase = cloudbaseSDK.init({
env: process.env.CLOUDBASE_ENV_ID,
secretId: process.env.CLOUDBASE_SECRETID,
secretKey: process.env.CLOUDBASE_SECRETKEY
});
module.exports = { cloudbase };
.env
信息
请前往 腾讯云控制台/API密钥管理 生成API密钥
# 环境ID
CLOUDBASE_ENV_ID={%ENV_ID%}
# 腾讯云API密钥ID
CLOUDBASE_SECRET_ID={%SECRET_ID%}
# 腾讯云API密钥Key
CLOUDBASE_SECRET_KEY={%SECRET_KEY%}
文档型数据库
- 查询数据
- 新增数据
- 更新数据
- 删除数据
const { cloudbase } = require("./utils/cloudbase");
async function getData() {
// 查询 {%TABLE_NAME%} 表前10条数据
const db = cloudbase.database();
const res = await db.collection("{%TABLE_NAME%}").limit(10).get();
console.log("查询成功:", res.data);
return res.data;
}
getData();
const { cloudbase } = require("./utils/cloudbase");
async function addData() {
try {
// 新增 {%TABLE_NAME%} 表数据
const db = cloudbase.database();
const res = await db
.collection("{%TABLE_NAME%}")
.add({ title: "示例标题" });
console.log(`新增成功! id: ${res.id}`);
} catch (error) {
console.error("新增失败:", error);
}
}
addData();
const { cloudbase } = require("./utils/cloudbase");
async function updateData() {
try {
// 更新 {%TABLE_NAME%} 表中 id 为指定值的数据
const db = cloudbase.database();
await db
.collection("{%TABLE_NAME%}")
.doc("<数据id>")
.update({ title: "新标题" });
console.log("更新成功!");
} catch (error) {
console.error("更新失败:", error);
}
}
updateData();
const { cloudbase } = require("./utils/cloudbase");
async function deleteData() {
try {
// 删除 {%TABLE_NAME%} 表中 id 为指定值的数据
const db = cloudbase.database();
await db.collection("{%TABLE_NAME%}").doc("<数据id>").remove();
console.log("删除成功!");
} catch (error) {
console.error("删除失败:", error);
}
}
deleteData();
云存储
- 上传文件
- 获取文件链接
- 下载文件
- 删除文件
const { cloudbase } = require("./utils/cloudbase");
const fs = require("fs");
async function uploadFile() {
const filePath = "./example.png"; // 本地文件路径
const cloudPath = `images/${Date.now()}-example.png`; // 上传至云端的路径
const res = await cloudbase.uploadFile({
cloudPath: cloudPath,
fileContent: fs.createReadStream(filePath)
});
console.log("上传成功:", res.fileID);
return res.fileID;
}
uploadFile();
const { cloudbase } = require("./utils/cloudbase");
async function getFileUrl() {
const res = await cloudbase.getTempFileURL({
fileList: ["cloud://xxx.png"] // 文件 fileID 列表
});
console.log("文件链接:", res.fileList[0].tempFileURL);
return res.fileList[0].tempFileURL;
}
getFileUrl();
const { cloudbase } = require("./utils/cloudbase");
const fs = require("fs");
async function downloadFile() {
const res = await cloudbase.downloadFile({
fileID: "cloud://xxx.png" // 文件 fileID
});
// 将文件保存到本地
fs.writeFileSync("./downloaded-file.png", res.fileContent);
console.log("下载成功!");
}
downloadFile();
const { cloudbase } = require("./utils/cloudbase");
async function deleteFile() {
const res = await cloudbase.deleteFile({
fileList: ["cloud://xxx.png"] // 文件 fileID 列表
});
if (res.fileList[0].code === "SUCCESS") {
console.log("删除成功!");
} else {
console.error("删除失败:", res.fileList);
}
}
deleteFile();
云函数
const { cloudbase } = require("./utils/cloudbase");
async function callFunction() {
// 调用 {%FUNCTION_NAME%} 云函数
const res = await cloudbase.callFunction({
name: "{%FUNCTION_NAME%}",
data: {}
});
console.log("云函数返回:", res.result);
return res.result;
}
callFunction();
大模型
- SDK调用
- LangChain
- OpenAI SDK
- 生图模型
const { cloudbase } = require("./utils/cloudbase");
async function callAIModel(input) {
const ai = cloudbase.ai();
// 使用自定义模型请修改为对应的模型提供商标识符
const model = ai.createModel("{%AI_MODEL_NAME%}");
try {
const res = await model.streamText({
model: "{%AI_SUB_MODEL_NAME%}",
messages: [
{
role: "system",
content:
"请严格按照七言绝句或七言律诗的格律要求创作,平仄需符合规则,押韵要和谐自然,韵脚字需在同一韵部。"
},
{ role: "user", content: input }
]
});
let response = "";
for await (let str of res.textStream) {
process.stdout.write(str);
response += str;
}
return response;
} catch (err) {
console.error("error:", err);
return null;
}
}
// 调用示例
callAIModel("春天");
信息
前往 环境配置 获取服务 端 API Key。
安装依赖
npm i @langchain/openai
使用示例:
const { ChatOpenAI } = require("@langchain/openai");
const model = new ChatOpenAI({
modelName: "{%AI_SUB_MODEL_NAME%}",
apiKey: "<CLOUDBASE_API_KEY>",
configuration: {
baseURL: "https://{%ENV_ID%}.api.tcloudbasegateway.com/v1/ai/{%AI_MODEL_NAME%}"
}
});
async function main() {
const response = await model.invoke("你好");
console.log("AI回答:", response.content);
}
main();
信息
前往 环境配置 获取服务端 API Key。
安装依赖
npm i openai
使用示例:
const OpenAI = require("openai");
const client = new OpenAI({
apiKey: "<CLOUDBASE_API_KEY>",
baseURL: "https://{%ENV_ID%}.api.tcloudbasegateway.com/v1/ai/{%AI_MODEL_NAME%}"
});
async function main() {
const completion = await client.chat.completions.create({
model: "{%AI_SUB_MODEL_NAME%}",
messages: [
{ role: "user", content: "hi" }
],
temperature: 0.3,
stream: true
});
for await (const chunk of completion) {
console.log(chunk);
}
}
main();
生图模型通过调用云函数来实现,在生图模型页面点击「一键创建云函数」,函数调用示例如下:
const { cloudbase } = require("./utils/cloudbase");
async function generateImage() {
// 调用生图云函数
const res = await cloudbase.callFunction({
name: "<YOUR_FUNCTION_NAME>",
data: {
prompt: "一只可爱的猫咪在阳光下玩耍"
}
});
const result = res.result;
if (result.success) {
// 生成成功
console.log("生成成功!");
console.log("图片URL:", result.imageUrl);
console.log("优化后的提示词:", result.revised_prompt);
// 使用图片
// 注意:图片URL有效期为24小时,请及时保存或转存
} else {
// 生成失败
console.error("生成失败:", result.code, result.message);
}
}
generateImage();