首页 > 编程语言 >【NLP开发】Python实现聊天机器人(OpenAI,开发指南笔记)

【NLP开发】Python实现聊天机器人(OpenAI,开发指南笔记)

时间:2023-04-12 22:07:21浏览次数:134  
标签:NLP Python text 模型 v1 API OpenAI openai model

1、开始使用

1.1 介绍

OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或代码的任务。我们提供一系列具有不同功率水平的型号,适用于不同的任务,并能够微调您自己的定制模型。这些模型可用于从内容生成到语义搜索和分类的所有内容。

  • 提示和完成(Prompts and completions)

completions终结点位于 API 的中心。它为我们的模型提供了一个简单的界面,非常灵活和强大。您输入一些文本作为提示,模型将生成一个文本补全,尝试匹配您为其提供的任何上下文或模式。例如,如果您向 API 提供提示“Write a tagline for an ice cream shop”,它将返回类似“We serve up smiles with every scoop!

设计Prompts 本质上是“编程”模型的方式,通常是通过提供一些说明或一些示例。这与大多数其他 NLP 服务不同,后者是为单个任务设计的,例如情绪分类或命名实体识别。相反,completions端点几乎可用于任何任务,包括内容或代码生成、摘要、扩展、对话、创意写作、风格迁移等。

  • 令 牌(Tokens)

我们的模型通过将文本分解为标记来理解和处理文本。标记可以是单词,也可以只是字符块。例如,单词“hamburger”被分解为标记“ham”,“bur”和“ger”,而像“pear”这样的简短而常见的单词是单个令牌。许多标记以空格开头,例如“hello”和“bye”。

给定 API 请求中处理的Tokens数量取决于输入和输出的长度。根据粗略的经验法则,对于英文文本,1 个标记大约是 4 个字符或 0.75 个单词。要记住的一个限制是,文本提示和生成的完成组合不得超过模型的最大上下文长度(对于大多数模型,这是 2048 个标记,或大约 1500 个单词)。

  • 温度(temperature)

提示设计并不是您可以使用的唯一工具。您还可以通过调整设置来控制完成。最重要的设置之一称为temperature。您可能已经注意到,如果在上面的示例中多次提交相同的提示,则模型将始终返回相同或非常相似的完成。这是因为您的temperature设置为 0。尝试在temperature设置为 1 的情况下重新提交相同的提示几次。当温度高于 0 时,提交相同的提示每次会导致不同的完成。

请记住,该模型预测哪些文本最有可能跟随其前面的文本。温度是介于 0 和 1 之间的值,实质上允许您控制模型在进行这些预测时的置信度。降低温度意味着风险更小,完成将更加准确和确定。温度升高将导致更多样化的完成。

  • 模型(Models)

该 API 由一组具有不同功能和价位的模型提供支持。我们的基本 GPT-3 模型称为Davinci、Curie、Babbage 和Ada。我们的 Codex 系列是 GPT-3 的后代,经过自然语言和代码训练。

  • 指南(Guides)

聊天(Chat):了解如何使用基于聊天的语言模型 文本完成(Text completion):了解如何生成或编辑文本 嵌入(Embeddings):了解如何搜索、分类和比较文本 语音转文本(Speech to text):了解如何将音频转换为文本 图像生成(Image generation):了解如何生成或编辑图像 代码完成(Code completion):了解如何生成、编辑或解释代码 微调(Fine-tuning):了解如何为您的用例训练模型

1.2 快速入门

现在您已经找到了一个很好的提示和设置,您可以构建您的应用!我们编写了一些代码来帮助你入门,按照以下说明下载代码并运行应用。

  • 安装开发环境

(1)首先安装 Node.js或者Python。这两种是官网推荐的方式。 (2)然后通过git下载开发包。

# nodejs
git clone https://github.com/openai/openai-quickstart-node.git

# python
git clone https://github.com/openai/openai-quickstart-python.git
  • 添加您的 API 密钥

要使应用正常运行,您需要一个 API 密钥。您可以通过注册一个帐户并返回此页面来获取一个。

  • 运行应用

在项目目录中运行以下命令以安装依赖项并运行应用。 (1)nodejs

npm install
npm run dev

(2)python

python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run

在浏览器中打开如下网址就可以看见官网的开发测试demo了:

 http://localhost:5000

<font color=blue>要记住的一个限制是,对于大多数模型,单个 API 请求在提示和完成之间最多只能处理 2048 个tokens(大约 1500 个单词)。

1.3 开发库

  • python开发库

OpenAI提供了一个 Python 库,您可以按如下方式安装:

pip install openai

安装后,可以使用bindings 和secret key运行以下命令:

import os
import openai

# Load your API key from an environment variable or secret management service
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

还可以使用命令行实用工具,您可以使用如下方式:

$ openai api completions.create -m text-davinci-003 -p "Say this is a test" -t 0 -M 7 --stream
  • nodejs开发库

OpenAI还有一个 Node.js 库,您可以通过在 Node.js 项目目录中运行以下命令来安装它:

$ npm install openai

安装后,您可以使用库和密钥运行以下命令:

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: "Say this is a test",
  temperature: 0,
  max_tokens: 7,
});

2、模型

2.1 Overview

OpenAI API 由具有不同功能和价位的各种模型提供支持。您还可以通过微调,针对您的特定用例对我们的原始基本模型进行有限的自定义。

模型 描述
GPT-3.5 一组改进 GPT-3 的模型,可以理解并生成自然语言或代码
DALL·E 可以在给定自然语言提示的情况下生成和编辑图像的模型
Whisper 可以将音频转换为文本的模型
Embeddings 一组可以将文本转换为数字形式的模型
Codex 一组可以理解和生成代码的模型,包括将自然语言转换为代码
Moderation 可以检测文本是否敏感或不安全的微调模型
GPT-3 一组可以理解和生成自然语言的模型

2.2 GPT-3.5

GPT-3.5 模型可以理解和生成自然语言或代码。我们功能最强大、最具成本效益的模型是针对聊天进行了优化,但也适用于传统的完成任务。gpt-3.5-turbo

最新模型 描述 最大请求数 训练数据
gpt-3.5-turbo Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with our latest model iteration. 4,096 tokens Up to Sep 2021
gpt-3.5-turbo-0301 Snapshot of gpt-3.5-turbo from March 1st 2023. Unlike gpt-3.5-turbo, this model will not receive updates, and will only be supported for a three month period ending on June 1st 2023. 4,096 tokens Up to Sep 2021
text-davinci-003 Can do any language task with better quality, longer output, and consistent instruction-following than the curie, babbage, or ada models. Also supports inserting completions within text. 4,097 tokens Up to Jun 2021
text-davinci-002 Similar capabilities to text-davinci-003 but trained with supervised fine-tuning instead of reinforcement learning 4,097 tokens Up to Jun 2021
code-davinci-002 Optimized for code-completion tasks 8,001 tokens Up to Jun 2021

我们建议在实验时使用 gpt-3.5-turbo,因为它会产生最佳结果。一旦你开始工作,我们鼓励尝试其他模型,看看你是否能以更低的延迟或成本获得相同的结果。

2.3 DALL·E

DALL·E是一个AI系统,可以从自然语言的描述中创建逼真的图像和艺术。我们目前支持创建具有特定大小的新图像、编辑现有图像或创建用户提供的图像的变体的功能。

通过我们的 API 提供的当前 DALL·E模型是 DALL·E的第二次迭代,具有比原始模型更逼真、更准确和分辨率高 4 倍的图像。您可以通过我们的实验室界面或通过 API 进行尝试。

2.4 Whisper

耳语是一种通用语音识别模型。它是在各种音频的大型数据集上进行训练的,也是一个多任务模型,可以执行多语言语音识别以及语音翻译和语言识别。Whisper v2-large 模型目前可通过我们的 API 使用模型名称。whisper-1

目前,Whisper的开源版本和通过我们的API提供的版本之间没有区别。但是,通过我们的 API,我们提供了一个优化的推理过程,这使得通过我们的 API 运行 Whisper 比通过其他方式运行要快得多。有关Whisper的更多技术细节,您可以阅读论文。

2.5 Embeddings

Embeddings是文本的数字表示形式,可用于衡量两段文本之间的相关性。我们的第二代Embeddings模型 text-embedding-ada-002 旨在以一小部分成本取代之前的 16 个第一代Embeddings模型。Embeddings对于搜索、聚类分析、建议、异常检测和分类任务非常有用。

2.6 Codex

Codex 模型是我们的 GPT-3 模型的后代,可以理解和生成代码。他们的训练数据包含自然语言和来自GitHub的数十亿行公共代码。他们最擅长Python,精通十几种语言,包括JavaScript,Go,Perl,PHP,Ruby,Swift,TypeScript,SQL甚至Shell。

我们目前提供两种Codex 模式:

最新模型 描述 最大请求数 训练数据
code-davinci-002 Most capable Codex model. Particularly good at translating natural language to code. In addition to completing code, also supports inserting completions within code. 8,001 tokens Up to Jun 2021
code-cushman-001 Almost as capable as Davinci Codex, but slightly faster. This speed advantage may make it preferable for real-time applications. Up to 2,048 tokens

2.7 Moderation

Moderation模型旨在检查内容是否符合 OpenAI 的使用策略。这些模型提供的分类功能可查找以下类别中的内容:hate, hate/threatening, self-harm, sexual, sexual/minors, violence, and violence/graphic。您可以在我们的审核指南中找到更多信息。Moderation模型采用任意大小的输入,该输入会自动分解以修复模型特定的上下文窗口。

描述 描述
text-moderation-latest Most capable moderation model. Accuracy will be slighlty higher than the stable model
text-moderation-stable Almost as capable as the latest model, but slightly older.

2.8 GPT-3

GPT-3 模型可以理解和生成自然语言。这些模型被更强大的 GPT-3.5 代模型所取代。但是,原始的 GPT-3 基本模型(davinci, curie, ada, and babbage)是当前唯一可用于微调的模型。

最新模型 描述 最大请求数 训练数据
text-curie-001 Very capable, faster and lower cost than Davinci. 2,049 tokens Up to Oct 2019
text-babbage-001 Capable of straightforward tasks, very fast, and lower cost. 2,049 tokens Up to Oct 2019
text-ada-001 Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost. 2,049 tokens Up to Oct 2019
davinci Most capable GPT-3 model. Can do any task the other models can do, often with higher quality. 2,049 tokens Up to Oct 2019
curie Very capable, but faster and lower cost than Davinci. 2,049 tokens Up to Oct 2019
babbage Capable of straightforward tasks, very fast, and lower cost. 2,049 tokens Up to Oct 2019
ada Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost. 2,049 tokens Up to Oct 2019

2.9 Model endpoint compatability

模型名称 ENDPOINTS
gpt-3.5-turbo /v1/chat/completions
gpt-3.5-turbo-0301 /v1/chat/completions
text-davinci-003 /v1/completions
text-davinci-002 /v1/completions`
text-davinci-edit-001 /v1/edits
code-davinci-edit-001 /v1/edits
whisper-1 /v1/audio/transcriptions, /v1/audio/translations
text-curie-001 /v1/completions
text-babbage-001 /v1/completions
text-ada-001 /v1/completions
davinci /v1/completions, /v1/fine-tunes
curie /v1/completions, /v1/fine-tunes
babbage /v1/completions, /v1/fine-tunes
ada /v1/completions, /v1/fine-tunes
text-embedding-ada-002 /v1/embeddings
text-search-ada-doc-001 /v1/embeddings
text-moderation-stable /v1/moderations
text-moderation-latest /v1/moderations

3、指南

3.1 Text completion

这个completions endpoint可用于各种任务。它为我们的任何模型提供了一个简单但功能强大的界面。您输入一些文本作为提示,模型将生成一个文本补全,尝试匹配您为其提供的任何上下文或模式。例如,如果你给 API 提示,“As Descartes said, I think, therefore”,它将以很高的概率返回完成“I am”。

3.2 Code completion

Codex 模型系列是我们的 GPT-3 系列的后代,该系列经过自然语言和数十亿行代码的训练。它最擅长Python,精通十几种语言,包括JavaScript,Go,Perl,PHP,Ruby,Swift,TypeScript,SQL甚至Shell。在最初的有限测试期内,Codex 使用是免费的。

您可以将 Codex 用于各种任务,包括:

  • 将注释转换为代码
  • 在上下文中完成下一行或函数
  • 为您提供知识,例如查找有用的库或应用程序的 API 调用
  • 添加评论
  • 重写代码以提高效率
import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
  model="code-davinci-002",
  prompt="# Python 3 \ndef remove_common_prefix(x, prefix, ws_prefix): \n    x[\"completion\"] = x[\"completion\"].str[len(prefix) :] \n    if ws_prefix: \n        # keep the single whitespace as prefix \n        x[\"completion\"] = \" \" + x[\"completion\"] \nreturn x \n\n# Explanation of what the code does\n\n#",
  temperature=0,
  max_tokens=64,
  top_p=1.0,
  frequency_penalty=0.0,
  presence_penalty=0.0
)

3.3 Chat completions

ChatGPT由OpenAI最先进的语言模型。gpt-3.5-turbo提供支持。 使用 OpenAI API,您可以构建自己的应用程序来执行以下操作:gpt-3.5-turbo

  • 起草电子邮件或其他文章
  • 编写Python代码
  • 回答有关一组文档的问题
  • 创建会话代理
  • 为您的软件提供自然语言界面
  • 一系列科目的导师
  • 翻译语言
  • 模拟视频游戏的角色等等

聊天模型将一系列消息作为输入,并返回模型生成的消息作为输出。尽管聊天格式旨在使多轮对话变得容易,但它对于没有任何对话的单轮任务同样有用(例如以前由指令遵循模型提供的任务 ).text-davinci-003

示例 API 调用如下所示:

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai

openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

示例 API 响应如下所示:

{
 'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve',
 'object': 'chat.completion',
 'created': 1677649420,
 'model': 'gpt-3.5-turbo',
 'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87},
 'choices': [
   {
    'message': {
      'role': 'assistant',
      'content': 'The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.'},
    'finish_reason': 'stop',
    'index': 0
   }
  ]
}

<font color=blue>由于 gpt-3.5-turbo 的性能与 text-davinci-003 相似,但每个代币的价格仅为 10%,因此我们建议 gpt-3.5-turbo 用于大多数用例。 gpt-3.5-turbo是否可以进行微调?不。自 2023 年 3 月 1 日起,您只能微调基本 GPT-3 模型。

3.4 Image generation

了解如何使用 DALL·E 模型。 图像 API 提供了三种与图像交互的方法:

  • 根据文本提示从头开始创建图像
  • 根据新的文本提示创建现有图像的编辑
  • 创建现有图像的变体

Image generation终结点允许您在给定文本提示的情况下创建原始图像。生成的图像的大小可以是 256x256、512x512 或 1024x1024 像素。较小的尺寸生成速度更快。您可以使用 n 参数一次请求 1-10 张图像。

  • python
response = openai.Image.create(
  prompt="a white siamese cat",
  n=1,
  size="1024x1024"
)
image_url = response['data'][0]['url']
  • nodejs
const response = await openai.createImage({
  prompt: "a white siamese cat",
  n: 1,
  size: "1024x1024",
});
image_url = response.data.data[0].url;
  • curl
curl https://api.openai.com/v1/images/generations \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "prompt": "a white siamese cat",
    "n": 1,
    "size": "1024x1024"
  }'

3.5 Fine-tuning

通过微调,您可以通过提供以下内容从通过 API 提供的模型中获得更多收益:

  • 比提示设计更高质量的结果
  • 能够训练比提示所能容纳的更多示例
  • 由于提示时间较短,可以节省代币
  • 更低的延迟请求

概括地说,微调涉及以下步骤:

  • 准备和上传训练数据
  • 训练新的微调模型
  • 使用微调模型
# Start your fine-tuning job
openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>

# List all created fine-tunes
openai api fine_tunes.list

# Retrieve the state of a fine-tune. The resulting object includes
# job status (which can be one of pending, running, succeeded, or failed)
# and other information
openai api fine_tunes.get -i <YOUR_FINE_TUNE_JOB_ID>

# Cancel a job
openai api fine_tunes.cancel -i <YOUR_FINE_TUNE_JOB_ID>

# Use a fine-tuned model
openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>

# Delete a fine-tuned model
openai api models.delete -i <FINE_TUNED_MODEL>

# Customize your model name
openai api fine_tunes.create -t test.jsonl -m ada --suffix "custom model name"

# Analyzing your fine-tuned model
openai api fine_tunes.results -i <YOUR_FINE_TUNE_JOB_ID>

# Classification specific metrics

# For multiclass classification
openai api fine_tunes.create \
  -t <TRAIN_FILE_ID_OR_PATH> \
  -v <VALIDATION_FILE_OR_PATH> \
  -m <MODEL> \
  --compute_classification_metrics \
  --classification_n_classes <N_CLASSES>

# For binary classification
openai api fine_tunes.create \
  -t <TRAIN_FILE_ID_OR_PATH> \
  -v <VALIDATION_FILE_OR_PATH> \
  -m <MODEL> \
  --compute_classification_metrics \
  --classification_n_classes 2 \
  --classification_positive_class <POSITIVE_CLASS_FROM_DATASET>

# Validation
openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> \
  -v <VALIDATION_FILE_ID_OR_PATH> \
  -m <MODEL>

# Hyperparameters
openai api fine_tunes.create \
  -t file-JD89ePi5KMsB3Tayeli5ovfW \
  -m ada \
  --n_epochs 1

3.6 Embeddings

OpenAI的文本嵌入衡量文本字符串的相关性。嵌入通常用于:

  • 搜索(其中结果按与查询字符串的相关性排名)
  • 聚类分析(其中文本字符串按相似性分组)
  • 建议(建议使用具有相关文本字符串的项目)
  • 异常检测(识别相关性不大的异常值)
  • 多样性测量(分析相似性分布)
  • 分类(其中文本字符串按其最相似的标签分类)

Embeddings是浮点数的向量(列表)。两个向量之间的距离衡量它们的相关性。小距离表示高相关性,大距离表示低相关性。

要获取嵌入,请将文本字符串发送到嵌入 API 终结点,同时选择嵌入模型 ID。响应将包含一个嵌入,您可以提取、保存和使用嵌入。text-embedding-ada-002

(1)示例请求:

  • python
response = openai.Embedding.create(
    input="Your text string goes here",
    model="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
  • curl
curl https://api.openai.com/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{"input": "Your text string goes here",
       "model":"text-embedding-ada-002"}'

(2)示例响应:

{
  "data": [
    {
      "embedding": [
        -0.006929283495992422,
        -0.005336422007530928,
        ...
        -4.547132266452536e-05,
        -0.024047505110502243
      ],
      "index": 0,
      "object": "embedding"
    }
  ],
  "model": "text-embedding-ada-002",
  "object": "list",
  "usage": {
    "prompt_tokens": 5,
    "total_tokens": 5
  }
}

3.7 Speech to text

了解如何将音频转换为文本。 语音转文本 API 提供了两个终结点,并且基于我们最先进的开源 large-v2: Whisper 模型。它们可用于: 转译、翻译。

  • 将音频转录为音频使用的任何语言。
  • 将音频翻译并转录为英语。

(1)转译(Transcriptions )

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
audio_file= open("/path/to/file/audio.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)

(2)翻译(Translations)

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
audio_file= open("/path/to/file/german.mp3", "rb")
transcript = openai.Audio.translate("whisper-1", audio_file)

3.8 Moderation

审查端点是一种工具,可用于检查内容是否符合 OpenAI 的使用策略。因此,开发人员可以识别我们的使用策略禁止的内容并采取行动,例如通过过滤。

  • 示例请求:
response = openai.Moderation.create(
    input="Sample text goes here"
)
output = response["results"][0]
  • 示例响应:
{
  "id": "modr-XXXXX",
  "model": "text-moderation-001",
  "results": [
    {
      "categories": {
        "hate": false,
        "hate/threatening": false,
        "self-harm": false,
        "sexual": false,
        "sexual/minors": false,
        "violence": false,
        "violence/graphic": false
      },
      "category_scores": {
        "hate": 0.18805529177188873,
        "hate/threatening": 0.0001250059431185946,
        "self-harm": 0.0003706029092427343,
        "sexual": 0.0008735615410842001,
        "sexual/minors": 0.0007470346172340214,
        "violence": 0.0041268812492489815,
        "violence/graphic": 0.00023186142789199948
      },
      "flagged": false
    }
  ]
}

4、其他

4.1 接口申请

OpenAI API 接入需要如下条件。

  • 已成功注册 OpenAI 的账号。https://platform.openai.com/account/api-keys
  • 创建 API KEY,这个 API KEY 是用于 HTTP 请求身份验证的,可以创建多个。如下图点击“Create new secret key“,注意这个创建之后需要马上复制好保存,关闭弹框之后就看不到了。
  • 官方 API 文档链接 api-reference。https://platform.openai.com/docs/api-reference/
  • 注意 API 调用是收费的,但是 OpenAI 已经为我们免费提供了18美元的用量,足够大家放心使用。

4.2 接口说明

接口文档:https://platform.openai.com/docs/api-reference/completions/create 请求URL:https://api.openai.com/v1/completions 请求方式:Post 请求体 :json

{
  "model": "text-davinci-003",
  "prompt": "hello world",
  "max_tokens": 7,
  "temperature": 0,
  "top_p": 1,
  "n": 1,
  "stream": false
}

请求参数说明:

字段 说明
model 可选参数。语言模型,这里选择的是text-davinci-003
prompt 必选参数。即用户的输入。
max_tokens 可选参数,默认值为 16。最大分词数,会影响返回结果的长度。
temperature 可选参数,默认值为 1,取值 0-2。该值越大每次返回的结果越随机,即相似度越小。
top_p 可选参数,与temperature类似。
n 可选参数,默认值为 1。表示对每条prompt生成多少条结果。
stream 可选参数,默认值为false。表示是否回流部分结果。

code-davinci-002 与 text-davinci-002 更偏向于轻量,使用这两种模型,获得回答的速度也许会加快。

4.3 代码例子

  • 这里提供网上网友的一个js的例子如下:
let url = "https://api.openai.com/v1/completions";
let answer = await axios // 使用axios发送post请求
  .post(url, data, { headers: headers })
  .then((res) => {
    return res.data.choices[0].text.trim();
  })
  .catch((err) => {
    console.log(err.response.data);
    return "error";
  });

post提交数据的时候, 把之前所有的对话都提交上去, 这样就有了上下文; 比如, 你把之前的对话, 存到一个数组里面, 提交数据的时候, 把数组里面的元素用 \n\n连接起来, AI 就会识别你上传的对话内容, 就有了上下文。

getPreviousConversationContent(data) {
  var len = data.length;
  let arr = [];
  for (var i = 0; i < len; i++) {
    let item = data[i];
    arr.push(item.content);
  }
  return arr.join("\n\n");
}

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O??? 如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡) 感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!! 在这里插入图片描述

标签:NLP,Python,text,模型,v1,API,OpenAI,openai,model
From: https://blog.51cto.com/fish/6186308

相关文章

  • 【视频】随机波动率SV模型原理和Python对标普SP500股票指数预测|数据分享|附代码数据
    全文链接:http://tecdat.cn/?p=22546最近我们被客户要求撰写关于随机波动率SV模型的研究报告,包括一些图形和统计输出。什么是随机波动率?随机波动率(SV)是指资产价格的波动率是变化的而不是恒定的。 “随机”一词意味着某些变量是随机确定的,无法精确预测。在金融建模的背景......
  • 2-面试题:python
    1、python对象的比较和拷贝?答:'=='操作符比较对象之间的值是否相等;'is'操作符比较的是对象的身份标识是否相等,即它们是否是同一个对象,是否指向同一个内存地址;比较操作符'is'的速度效率,通常优于'==';浅拷贝和深拷贝:浅拷贝,将原对象或原数组的引用直接赋值给新对象、新数组,新对象/......
  • c sharp与python通信
    最近在学unity,想在unity调用python。因此学习了使用udp来建立通信。python发送,csharp接收python代码importsocketimporttimesock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)serverAddressPort=("127.0.0.1",10086)#5052定义localhost与端口,当然可......
  • 摸鱼用python代码收集每天大瓜内容信息,并发送到自己的邮箱
    本篇文章内容主要为如何用代码,把你想要的内容,以邮件的形式发送出去内容可以自己完善,还可以设置一个定时发送,或者开机启动自动运行代码代理注册与使用注册账号并登录生成api将自己电脑加入白名单http://api.tianqiip.com/white/add?key=xxx&brand=2&sign=xxx&ip=输入自己电脑的ip地......
  • 面试题:python
    列表和元组的区别列表是动态的,长度可变,可以对元素进行增、删、改操作;列表存储空间略大于元组,性能略逊于元组;元组是静态的,长度大小固定,不可以对元素进行增、删、改操作;元组相对于列表更加轻量级,性能稍优;字典和集合字典是有序的数据结构,而集合是无序的,其内部的哈希表存储结构,......
  • python习题-筛法求素数
    【题目描述】用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。【基本思想】用筛法求素数的基本思想是:把从2到N的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍数,直到根号N的倍数为止,剩余的即为2~N之间的所有素数。【源代码程序】defsie......
  • python(十一):小型数据库:shelve
     Python中shelve模块是对象持久化保存方法,将对象保存到文件里面,缺省(即默认)的数据存储文件是二进制的,可以作为一个简单的数据存储方案。使用时,只需要使用open函数获取一个shelf对象,然后对数据进行增删改查操作,在完成工作、并且将内存存储到磁盘中,最后调用close函数变回将......
  • python习题-验证6174猜想
    【题目描述】1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。【源代码程序】de......
  • python习题-杨辉三角
    【题目描述】输出n(0<n)行杨辉三角形,n由用户输入。【源代码程序】n=int(input("请输入要打印的杨辉三角的行数:"))#初始化杨辉三角的第一行triangle=[[1]]#循环生成杨辉三角foriinrange(1,n):#初始化当前行的第一个元素为1row=[1]#循环生成当......
  • 20230412-Python-pycharm使用技巧
     1.新建文件,自动生成代码       2.自动补齐自定义段落        3.修改注释颜色        ......