鱼C论坛

 找回密码
 立即注册
查看: 79|回复: 3

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

[复制链接]
发表于 2024-4-16 15:21:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-16 15:22:04 | 显示全部楼层
要将超过ChatGPT 3.5模型限制的长文本发送到API进行处理,您需要按照API的要求对文本进行分割,并通过多个请求来逐段发送。以下是一种实现方法:

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

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

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

下面是一个示例代码:

  1. import requests

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

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

  7.     return result

  8. def merge_text(long_text):
  9.     segments = []
  10.     current_segment = ""

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

  15.         current_segment += sentence + ". "

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

  18.     merged_result = ""

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

  22.     return merged_result
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[0].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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-16 15:49:53 | 显示全部楼层
blackantt 发表于 2024-04-16 15:49
能把超长文本功能合并到这个代码里吗?
from openai  ...


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

  1. from openai import OpenAI

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

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

  13. def merge_text(long_text):
  14.     segments = []
  15.     current_segment = ""
  16.     for sentence in long_text.split("."):
  17.         if len(current_segment + sentence) > 2048:
  18.             segments.append(current_segment.strip())
  19.             current_segment = ""
  20.         current_segment += sentence + ". "
  21.    
  22.     if current_segment:
  23.         segments.append(current_segment.strip())
  24.    
  25.     merged_result = ""
  26.     for segment in segments:
  27.         response = send_to_chatgpt3(segment)
  28.         merged_result += response
  29.    
  30.     return merged_result

  31. 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"""
  32. reply = merge_text(question)

  33. print("你:", question)
  34. print("GPT:", reply)
复制代码


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 02:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表