Azure OpenAI 和令牌限制

我想使用GPT模型来分析我的数据。数据是一套记录(例如1000条记录),每条记录有10个或更多的属性。我想对GPT(或其他模型)说:

“请分析这些数据,找出异常、极值等。任何与常规不同的东西。”

我使用了Azure.AI.OpenAI NuGet包 https://github.com/Azure/azure-sdk-for-net/blob/Azure.AI.OpenAI_1.0.0-beta.12/sdk/openai/Azure.AI.OpenAI/README.md

当我尝试使用"gpt-35-turbo模型并使用以下代码时:

        var chatCompletionsOptions = new ChatCompletionsOptions()        {            DeploymentName = "gpt-35-turbo", // Use DeploymentName for "model" with non-Azure clients            Messages =            {                new ChatRequestSystemMessage("You are data specialist"),                new ChatRequestUserMessage(@"Analyze this data and find exceptions"),                new ChatRequestUserMessage(stringBuilder.ToString())            }        };        Response<ChatCompletions> aiChatResponse = await _openAIClient.GetChatCompletionsAsync(chatCompletionsOptions);        ChatResponseMessage responseChatMessage = aiChatResponse.Value.Choices[0].Message;

其中stringBuilder包含了1000条记录和2列的JSONL模型

我得到了以下结果:

{  "error": {    "message": "This model's maximum context length is 8192 tokens. However, your messages resulted in 17901 tokens. Please reduce the length of the messages.",    "type": "invalid_request_error",    "param": "messages",    "code": "context_length_exceeded"  }}

因此,我们可以看到,通过聊天分析数据的限制较小

当我尝试使用text-embedding-ada-002模型时:

        EmbeddingsOptions embeddingsOptions = new("text-embedding-ada-002", strings);        Response<Embeddings> responseEmbeddings = await _openAIClient.GetEmbeddingsAsync(embeddingsOptions);        EmbeddingItem eItem = responseEmbeddings.Value.Data[0];        ReadOnlyMemory<float> embedding = eItem.Embedding;

但执行时间很长,我因为成本增加而取消了它。使用10条记录时,它只返回了一个数字列表…

补充#1

例如,我有一份人员名单,他们都来自芝加哥,除了两个来自其他城市的人。或者他们大多数人的年薪约为10万美元,但有些人的年薪只有1万美元(远低于平均水平),有些人的年薪为100万美元(远高于平均水平)。或者其他任何不同的异常和偏差,我不知道具体是哪些,因为如果我知道的话,我可以直接开发它。我希望能够将所有数据作为模型进行分析,找出任何东西(可能不仅仅是基于一个参数,可能涉及多个关联参数)。并且,甚至可以发现数据内部的关系,一个参数与另一个参数之间的关系(例如,纽约的薪资远高于城市X)。这些只是例子,主要目标是——我不知道具体的关系和异常,AI应该指出这些

如何解决我的任务?


回答:

我将尝试回答您遇到的问题,希望这能给您一些继续前进的思路。

首先,关于text-embedding-ada-002模型,您不能用它来进行聊天完成。它是用来创建数据的向量表示并输入到向量数据库中的。

关于您在使用GPT 3.5模型时遇到的令牌长度错误,这是预期中的,因为模型的最大令牌大小(也称为上下文大小,即可以发送到Azure OpenAI的数据量)是固定的,您不能超过它们。您可以采取以下几种方法来处理这个错误:

  • 使用支持更大上下文长度的模型。例如,您可以使用gpt-35-turbo-16k,它支持16k的上下文大小(是您当前使用的模型的两倍),或者gpt-4-32k(是您当前使用的模型的四倍)。这将允许您向模型传递更大的文本以进行理解。然而,请注意,GPT-4模型的成本显著高于GPT-3.5模型,所以请也考虑这一点。
  • 使用提示模式。一种可能的解决方案是使用Map-Reduce类型的模式,您可以将数据分成较小的块,并将每个块与您的问题一起发送给LLM。一旦您获得了每个块的响应,再将这些响应发送回LLM以进行理解并得出最终答案(由于我不完全了解您试图解决的业务问题,所以我不确定这是否能解决您的问题,因此您可能需要尝试一下)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注