安装 Node.js 22+,配置 OpenAI Node.js 库、Vercel AI SDK 基础环境

文章目录

一、安装 Node.js 22+

  1. 官网下载:访问 Node.js 官网,选择 v22.x 稳定版(LTS 或 Current 均可),按系统(Windows/Mac/Linux)安装。
  2. 验证安装:终端执行 node -vnpm -v,输出 v22.x.x 即成功(npm 会随 Node 自动安装)。

二、初始化项目与安装依赖

1. 新建项目文件夹,终端进入目录,执行初始化命令:

npm init -y # 快速生成 package.json

2. 安装核心依赖:

# OpenAI Node.js 库(官方最新版)npminstall openai@latest # Vercel AI SDK(含基础工具链)npminstall ai@latest 

三、基础配置(关键步骤)

1. 配置 OpenAI 库

  • 在项目根目录创建 .env 文件,添加 API 密钥(需提前在 OpenAI 官网获取):
OPENAI_API_KEY=your-api-key-here # 替换为真实密钥 
  • 基础使用示例(创建 index.js):
import OpenAI from'openai';const openai =newOpenAI({ apiKey: process.env.OPENAI_API_KEY});// 测试调用(示例:生成文本)asyncfunctiontestOpenAI(){const response =await openai.chat.completions.create({ model:"gpt-3.5-turbo", messages:[{ role:"user", content:"Hello World"}]}); console.log(response.choices[0].message.content);}testOpenAI();

2. 配置 Vercel AI SDK

  • 无需额外密钥配置(依赖 OpenAI 密钥),基础流式调用示例(修改 index.js):
import{ openai }from'@ai-sdk/openai';import{ streamText }from'ai';asyncfunctiontestVercelAI(){const result =awaitstreamText({ model:openai('gpt-3.5-turbo'), prompt:"Hello World"});// 流式输出结果forawait(const chunk of result.textStream){ process.stdout.write(chunk);}}testVercelAI();

四、运行测试

  1. 安装 dotenv 加载环境变量:npm install dotenv --save-dev
  2. 修改 package.json 添加启动脚本:
"scripts":{"start":"node -r dotenv/config index.js"}
  1. 终端执行 npm start,成功输出 AI 回复即配置完成。

完整的项目目录结构 和 调试常见报错

Read more

【C++写详细总结①】从for循环到算法初步

【C++写详细总结①】从for循环到算法初步

前言 本文通过小编自身学习的进程从而总结出本文,也希望大家可以好好学习,帮助到自己 这个是萌新考场救场代码,与本文一起食用更佳 for循环计数器 for(定义计数变量;定义结束条件;每次循环所做的动作) 示例 for(int i=1;i<=10;i++) //首先定义“i”变量作为计数数组,赋初值为“1”//然后每次循环判断条件是否成立,不成立则退出//最后每循环执行条件,此示例为每循环“i”增加1 而计数器就是在for循环有了一定执行范围的基础上创建了一个数组,进行++计数 示例 #include<iostream>// 万年不变的框架usingnamespace std;intmain(){int n; cin>>n;//输入数值表示从1~n中有几个数字int

By Ne0inhk
【C++笔记】模板初阶

【C++笔记】模板初阶

前言:         C++模板是C++中实现泛型编程的核心工具,允许程序员编写与类型无关的代码,从而提高代码的复用性和灵活性。模板在编译时进行实例化,根据实际使用的类型生成具体的代码,因此不会带来运行时开销。          一、模板基础          1.1 为什么需要模板?          在编写函数或类时,如果希望它们能处理多种数据类型(如int、double、string),传统方法是使用函数重载,但这样会产生大量重复代码或失去类型信息。 模板允许将类型作为参数,编译器根据调用时传入的具体类型生成对应的代码。          场景:需要编写一个求两个数最大值的函数,支持 int、double 和 string(按字典序)。          ①传统方法:函数重载 #include <iostream> #include <string> using namespace std; // 为 int 重载 int max(int

By Ne0inhk
Re:从零开始的 C++ 进阶篇(二)C++继承到底做了什么?从对象模型到底层内存布局彻底讲透

Re:从零开始的 C++ 进阶篇(二)C++继承到底做了什么?从对象模型到底层内存布局彻底讲透

◆ 博主名称: 晓此方-ZEEKLOG博客大家好,欢迎来到晓此方的博客。⭐️C++系列个人专栏: 主题曲:C++程序设计⭐️ 踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰 0.1概要&序論 这里是此方,好久不见。 继承是 C++ 中最核心却最易被误解的机制之一。它不仅关乎语法层面的扩展,更涉及对象模型、内存布局与多态实现。本文将从底层原理出发,系统解析继承的真实运作机制。这里是「此方」。让我们现在开始吧! 一,初识继承 1.1 继承的概念与使用方法导入 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在 保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称为 派生类。 继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。

By Ne0inhk
深入解剖STL map/multimap:接口使用与核心特性详解

深入解剖STL map/multimap:接口使用与核心特性详解

❤️@燃于AC之乐 来自重庆 计算机专业的一枚大学生 ✨专注 C/C++ Linux 数据结构 算法竞赛 AI 🏞️志同道合的人会看见同一片风景! 👇点击进入作者专栏: 《算法画解》 ✅ 《linux系统编程》✅ 《C++》 ✅ 🌟《算法画解》算法相关题目点击即可进入实操🌟 感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单! 文章目录 * 前言(map系列容器概述) * 一、map类介绍 * 1.1 map的类模板声明 * 二、pair类型介绍 * 2.1 pair的结构定义 * 2.2 pair的使用要点 * 三、map的构造与迭代器 * 3.1 构造接口 * 3.2 迭代器接口 * 四、map的增删查操作

By Ne0inhk