白嫖GPT 4o
January 7, 2025
这里白嫖的是Github的GPT, 并不是OpenAI的。
获取key
打开Github, 点击右上角的Get API key
, 打开窗口后点击Get developer key
获取你的Github key.
跳转到新的页面后点击Generate new token
, 这里我们选择classic(说实话我也不知道这两个有什么区别, 就选择一般用途的).
点击后会跳转到一个页面, 让你给key
命名, 以及设置有效期, 有效期我直接设置无限, 我懒得之后再更新, 下面的权限一个都不需要添加.
获取到key
后保存好, 之后需要通过key
来验证身份。
初始化项目
初始化一个node.js
项目, 修改package.json
文件, 我们需要使用ES6语法, 这是openai
依赖要求的.
{
"type": "module",
}
安装依赖
pnpm i openai
新建一个sample.js
文件, 将下面的代码复制进去, 并修改token
为你刚刚获取的key
.
import OpenAI from "openai";
const token = ""; // 这里是你的key
const endpoint = "https://models.inference.ai.azure.com";
const modelName = "gpt-4o";
export async function main() {
const client = new OpenAI({ baseURL: endpoint, apiKey: token });
const stream = await client.chat.completions.create({
messages: [
{ role: "system", content: "你是一个乐于助人的ai助手" },
{ role: "user", content: "给我五个需要学习的理由" },
],
model: modelName,
stream: true,
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content || "");
}
process.stdout.write("\n");
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
在终端执行node sample.js
就能看到ai的回答了.
优化代码
当然, 我们刚刚的操作并不健康, 例如直接把key
放进代码, 如果你把它上传到了Github之类的地方会导致你的key
泄露, 这是很危险的, 以及固定的用户输入.
对于key
, 一般设置为环境变量.
如果你使用bash:
export GITHUB_TOKEN="<你的key>"
如果你使用powershell:
$Env:GITHUB_TOKEN="<你的key>"
如果你使用windows的cmd:
set GITHUB_TOKEN=<你的key>
或者你可以写一个.env
环境变量文件在你的项目里面:
KEY = # 这里写你的key, 不需要使用引号
安装dotenv
并修改一下代码:
pnpm i dotenv
import OpenAI from "openai";
import "dotenv/config";
const token = process.env.KEY; # 修改从.env获取
const endpoint = "https://models.inference.ai.azure.com";
const modelName = "gpt-4o";
export async function main() {
const client = new OpenAI({ baseURL: endpoint, apiKey: token });
const stream = await client.chat.completions.create({
messages: [
{ role: "system", content: "你是一个乐于助人的ai助手" },
{ role: "user", content: process.argv.slice(2)[0] }, # 修改输入从命令行获取
],
model: modelName,
stream: true,
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content || "");
}
process.stdout.write("\n");
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
接着我们输入命令就能看到ai的回答了:
node sample.js 下午好