blackantt 发表于 2024-4-16 15:21:48

python怎么把超限长文本通过api发给chatgpt3.5去合并处理?

python怎么把超限长文本通过api发给chatgpt3.5去合并处理?

FishC 发表于 2024-4-16 15:22:04

要将超过ChatGPT 3.5模型限制的长文本发送到API进行处理,您需要按照API的要求对文本进行分割,并通过多个请求来逐段发送。以下是一种实现方法:

首先,确定ChatGPT 3.5模型对文本长度的限制。假设限制是2048个字符。

然后,将超长文本分割成小段,每段都不超过2048个字符。可以使用句号、换行符等作为分割标志,确保分割段落时不会影响语义完整性。

接下来,准备发送API请求的代码。您可以使用Python中的`requests`库来发送HTTP请求。确保您已经获得了API的授权密钥和相关信息。

下面是一个示例代码:

import requests

def send_to_chatgpt3(text):
    url = "API的URL"
    headers = {"Authorization": "密钥信息"}

    response = requests.post(url, headers=headers, json={"text": text})
    result = response.json()

    return result

def merge_text(long_text):
    segments = []
    current_segment = ""

    for sentence in long_text.split("."):
      if len(current_segment + sentence) > 2048:
            segments.append(current_segment.strip())
            current_segment = ""

      current_segment += sentence + ". "

    if current_segment:
      segments.append(current_segment.strip())

    merged_result = ""

    for segment in segments:
      response = send_to_chatgpt3(segment)
      merged_result += response["result"]

    return merged_result

在上述示例中,`send_to_chatgpt3()`函数负责发送单个文本段落给ChatGPT 3.5的API,并返回处理结果。`merge_text()`函数将长文本分割成可接受的短段落,并依次发送,最后将处理结果合并返回。

请记住,由于ChatGPT 3.5的API调用可能会产生费用,您需要在使用之前了解并遵守API提供商的收费政策。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

blackantt 发表于 2024-4-16 15:49:04

能把超长文本功能合并到这个代码里吗?
from openai import OpenAI

client = OpenAI(
    base_url = 'https://api.chatany.tech/v1',
    api_key = "sk-loHrzSP2KEPOWUVFE5KeARwjTpSbSzKguMQYjIxFZ2xv"      # 设置你的 API 密钥
)

def chat(question):
    response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": question}
    ]
    )
    reply = response.choices.message.content
    return reply

question = """请给下面的文本加上标点:
hey thank you so much for clicking on this video my name is Olivia and I'm a gender affirming voice teacher if you're working on voice training ]
"""

reply = chat(question)


print("你:", question)
print("GPT:", reply)

FishC 发表于 2024-4-16 15:49:53

blackantt 发表于 2024-04-16 15:49
能把超长文本功能合并到这个代码里吗?
from openai...

当然可以将超长文本的功能合并到您提供的代码中。请注意,您提供的代码使用了CHAT API的另一个库,而非requests库。因此,您需要根据OpenAI库的文档,找到相应的方法来发送多个请求以处理超长文本。以下是将超长文本功能合并到代码中的示例:

from openai import OpenAI

client = OpenAI(
    base_url='https://api.chatany.tech/v1',
    api_key="sk-loHrzSP2KEPOWUVFE5KeARwjTpSbSzKguMQYjIxFZ2xv"# 设置你的 API 密钥
)

def send_to_chatgpt3(text):
    response = client.chat.completions.create(
      model="gpt-3.5-turbo",
      messages=[{"role": "system", "content": "You:"}, {"role": "user", "content": text}]
    )
    reply = response.choices.message.content
    return reply

def merge_text(long_text):
    segments = []
    current_segment = ""
    for sentence in long_text.split("."):
      if len(current_segment + sentence) > 2048:
            segments.append(current_segment.strip())
            current_segment = ""
      current_segment += sentence + ". "
   
    if current_segment:
      segments.append(current_segment.strip())
   
    merged_result = ""
    for segment in segments:
      response = send_to_chatgpt3(segment)
      merged_result += response
   
    return merged_result

question = """请给下面的文本加上标点:hey thank you so much for clicking on this video my name is Olivia and I'm a gender affirming voice teacher if you're working on voice training"""
reply = merge_text(question)

print("你:", question)
print("GPT:", reply)

在上述示例中,`send_to_chatgpt3()`函数负责调用库的CHAT API发送单个文本段落给ChatGPT 3.5模型,并返回处理结果。`merge_text()`函数用于将超长文本分割为可接受的短段落,并依次发送处理,并将最终结果合并返回。

请确保您已正确导入所需的库,并且已正确配置API密钥和URL。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: python怎么把超限长文本通过api发给chatgpt3.5去合并处理?