LLM开发模板:小白必看

在开发基于LLM的应用时,遵循一定的项目结构和流程可以提升开发效率和代码质量。以下是一个简单的项目,接下来我将从0开始手把手带你搭建这样一个LLM项目。

import OpenAI from "openai";
import dotenv from "dotenv";

dotenv.config()

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL:process.env.OPENAI_BASE_URL
})
const getCompletion =  async (prompt, model="gpt-4o") => {
  const messages = [{
    role: 'user',
    content: prompt
  }];

  const response = await client.chat.completions.create({
    model: model,
    messages: messages,
    temperature: 0.9
  }) 
  return response.choices[0].message.content
}

const main = async () => {
  const prod_review = `
  我女儿生日时买了这个熊猫毛绒玩具,她很喜欢,到处都带着。
  它柔软、超级可爱,脸看起来很友好。
  不过,相对于我付的价格来说,它有点小。
  我想,同样的价格,也许还有其他更大的选择。
  它比预期早到了一天,所以我有机会自己玩了一会儿,然后才把它送给她。
  `;

  const prompt =`
  你的任务是生成来自电子商务网站的产品评论有关时间运输的简短摘要。
  以便向运输部门提供相关时间的反馈。
  总结下面用三个反引号分隔的产品评论,最多30字。
  只关注任何提及产品运输方面的内容
  评论:'''${prod_review}'''
  `;
  const response = await getCompletion(prompt)
  console.log(response);
}
main()

1. 初始化项目

npm init -y

这条命令会创建一个新的Node.js项目,并自动生成package.json文件,其中包含了项目的初始配置。

1.1 安装依赖

  • 将所需的依赖项列表复制到package.json中的dependencies部分。如OpenAI,dotenv…
  • 使用npm i命令安装这些依赖项。

1.2 运行后端项目

  • 确保所有必要的依赖都已安装。
  • 使用node命令启动你的后端项目。

2. 导入模块

import OpenAI from "openai";
import dotenv from "dotenv";
  • OpenAI:这是 OpenAI 的官方客户端库,用于与 OpenAI 的 API 进行交互。通过这个库,我们可以轻松地发送请求并处理响应。
  • dotenv:这是一个用于加载环境变量的库,通常从 .env 文件中加载。这样可以避免在代码中硬编码敏感信息,如 API 密钥。

3. 加载环境变量

dotenv.config();
  • dotenv.config() :这个方法会读取项目根目录下的 .env 文件,并将其中的环境变量加载到 process.env 对象中。例如,如果你的 .env 文件中有 OPENAI_API_KEY=your_api_key,那么 process.env.OPENAI_API_KEY 就会等于 your_api_key

4. 初始化 OpenAI 客户端

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: process.env.OPENAI_BASE_URL
});
  • apiKey:从环境变量中获取 OpenAI API 的密钥。这是调用 API 所必需的认证信息。
  • baseURL:从环境变量中获取 OpenAI API 的基础 URL。默认情况下,OpenAI 的基础 URL 是 https://api.openai.com/v1,但有时你可能需要使用自定义的 URL。

5. 定义 getCompletion 函数

const getCompletion = async (prompt, model = "gpt-4o") => {
  const messages = [{
    role: 'user',
    content: prompt
  }];

  const response = await client.chat.completions.create({
    model: model,
    messages: messages,
    temperature: 0.9
  });

  return response.choices[0].message.content;
};

5.1 函数定义

const getCompletion = async (prompt, model="gpt-4o") => {
  • 这里定义了一个异步函数 getCompletion,它接受两个参数:

    • prompt:这是用户提供的文本提示,模型将基于这个提示生成响应。
    • model:这是模型的名字,默认值为 "gpt-4o"。这个参数指定了将要使用的语言模型。

5.2 消息构建

const messages = [{
  role: 'user',
  content: prompt
}];
  • 这里创建了一个消息数组 messages,其中包含一个对象,该对象模拟了用户的提问。

    • role: 'user' 表示这是一个来自用户的消息。
    • content: prompt 是消息的具体内容,即用户输入的提示。

5.3 调用API

const response = await client.chat.completions.create({
  model: model,
  messages: messages,
  temperature: 0.9
});
  • 这行代码使用 await 关键字等待 client.chat.completions.create 方法返回结果。client 对象应该是预先配置好的,用于与特定的语言模型API进行通信。

    • model: model 指定了要使用的模型名称。
    • messages: messages 将之前构建的消息数组传递给API,作为请求的一部分。
    • temperature: 0.9 设置了生成文本的随机程度。随机值越高,生成的文本越随机;随机值越低,生成的文本越确定。这里的值为 0.9,意味着输出会有一定的创造性或多样性。

5.4 返回结果

return response.choices[0].message.content;
  • 这行代码从API返回的响应中提取出第一个选择的文本内容,并将其作为函数的返回值。

    • response.choices 是一个数组,包含了API生成的所有可能的回答。
    • [0] 选择了第一个元素,即最有可能的回应。
    • .message.content 获取了这条消息的实际内容,也就是模型生成的文本。

6. 定义 main 函数

const main = async () => {
  const prod_review = `
  我女儿生日时买了这个熊猫毛绒玩具,她很喜欢,到处都带着。
  它柔软、超级可爱,脸看起来很友好。
  不过,相对于我付的价格来说,它有点小。
  我想,同样的价格,也许还有其他更大的选择。
  它比预期早到了一天,所以我有机会自己玩了一会儿,然后才把它送给她。
  `;

  const prompt = `
  你的任务是生成来自电子商务网站的产品评论有关时间运输的简短摘要。
  以便向运输部门提供相关时间的反馈。
  总结下面用三个反引号分隔的产品评论,最多30字。
  只关注任何提及产品运输方面的内容
  评论:'''${prod_review}'''
  `;

  const response = await getCompletion(prompt);
  console.log(response);
};
  • main:这是一个异步函数,包含主要的业务逻辑。

    • prod_review:这是一个字符串,包含产品的评论。这个评论将作为输入,用于生成摘要。

    • prompt:这是一个字符串,构建了一个提示,告诉模型生成一个关于运输时间的简短摘要。

      • 任务描述:明确告知模型任务的目标,即生成关于运输时间的简短摘要。
      • 摘要要求:要求摘要最多30字,并且只关注运输时间相关的部分。
      • 评论内容:使用三个反引号包裹的 prod_review 作为输入评论。
    • response:调用 getCompletion 函数,传入构建好的提示,并等待返回的摘要。

    • console.log(response) :打印生成的摘要,以便查看结果。

7. 调用 main 函数

main();
  • main() :调用 main 函数,启动整个流程。由于 main 是一个异步函数,调用它会立即返回一个 Promise,但不会阻塞主程序的执行。

8. 总结

综上所述,在构建AI应用时,特别是那些依赖于LLM的应用,设计出有效的prompt模板是至关重要的。一个好的prompt应该清晰地传达用户的需求,并且能够引导LLM产生准确、相关和有用的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值