blackantt 发表于 2024-10-25 16:09:17

怎么才能让gpt4free帮我翻译srt字幕文件呢?

import g4f
from g4f.client import Client

client = Client()

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
      {
            "role": "user",
            "content": "How do I make a cup of coffee? "
      }
    ]
    # Add any other necessary parameters
)

print(response.choices.message.content)
这个做coffee的问题,它回答的很好。


但下面这个翻译srt字幕的代码,没有结果
import g4f
from g4f.client import Client

client = Client()
def srtFileGPTtran(questionfile, srtZhFileNameAndPath):
    questionfile = "translate the following subtitles text to Chinese, treat as one continuous text:\n" + open(questionfile, "r", encoding="utf-8").read()
    print(questionfile, 'chatGPT is working .....................................')

    response = client.chat.completions.create(
      model="gpt-3.5-turbo",
      messages=[
            {
                "role": "system", "content": "You are a professional subtitle translator.",
                "role": "user", "content": questionfile
            }
      ]
      # Add any other necessary parameters
    )
    reply = response.choices.message.content
    with open(srtZhFileNameAndPath, "w", encoding="utf-8") as file:
      file.write(reply)

srtEnFileNameMergeAndPath = './1fr.srt'
srtZhFileNameAndPath = './1zh.srt'
srtFileGPTtran(srtEnFileNameMergeAndPath, srtZhFileNameAndPath)

FishC 发表于 2024-10-25 16:09:25

为了让你的代码能够正常工作并翻译 srt 字幕文件,你需要确保以下几点:
1. 正确设置 `messages` 参数。
2. 异常处理(如处理 API 请求失败的情况)。

下面是修正后的代码示例,包含了必要的参数和处理逻辑:

import g4f
from g4f.client import Client

client = Client()

def srtFileGPTtran(questionfile, srtZhFileNameAndPath):
    with open(questionfile, "r", encoding="utf-8") as file:
      srt_content = file.read()

    question_content = "translate the following subtitles text to Chinese, treat as one continuous text:\n" + srt_content
    print("ChatGPT is working...")

    response = client.chat.completions.create(
      model="gpt-3.5-turbo",
      messages=[
            {"role": "system", "content": "You are a professional translator."},
            {"role": "user", "content": question_content}
      ]
    )

    reply = response.choices.message['content']
    with open(srtZhFileNameAndPath, "w", encoding="utf-8") as file:
      file.write(reply)

srtEnFileNameMergeAndPath = './1fr.srt'
srtZhFileNameAndPath = './1zh.srt'
srtFileGPTtran(srtEnFileNameMergeAndPath, srtZhFileNameAndPath)

让我们来解释一下关键部分:

1. **读取文件内容**:
   with open(questionfile, "r", encoding="utf-8") as file:
       srt_content = file.read()

2. **构建问题内容**:
   question_content = "translate the following subtitles text to Chinese, treat as one continuous text:\n" + srt_content

3. **创建消息**:
   response = client.chat.completions.create(
       model="gpt-3.5-turbo",
       messages=[
         {"role": "system", "content": "You are a professional translator."},
         {"role": "user", "content": question_content}
       ]
   )

4. **处理回复并写入文件**:
   reply = response.choices.message['content']
   with open(srtZhFileNameAndPath, "w", encoding="utf-8") as file:
       file.write(reply)

确保你要翻译的文件路径和文件名都是正确的。此外,请确保你的 `g4f` API 调用配置和参数都是准确无误的。这样可以确保你的代码能够正常运行并生成翻译后的 srt 文件。

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

blackantt 发表于 2024-10-25 16:21:12

FishC 发表于 2024-10-25 16:09
为了让你的代码能够正常工作并翻译 srt 字幕文件,你需要确保以下几点:
1. 正确设置 `messages` 参数。
...

在把 reply = response.choices.message['content']改为 reply = response.choices.message.content 后
执行结果是:Hello! How can I assist you today?

FishC 发表于 2024-10-25 16:21:25

blackantt 发表于 2024-10-25 16:21
在把 reply = response.choices.message改为 reply...

看起来你的代码缺少必要的参数传递以及正确构建 API 请求信息的方式。我们需要传递模型名称、信息内容和消息格式给 API。下面是一个具体的示例代码,确保正确地处理 GPT-3.5-turbo API 的调用:

import g4f
from g4f.client import Client

def srtFileGPTtran(questionfile, srtZhFileNameAndPath):
    with open(questionfile, "r", encoding="utf-8") as file:
      srt_content = file.read()

    question_content = "Translate the following subtitles text to Chinese, treat as one continuous text:\n" + srt_content
    print("ChatGPT is working...")

    client = Client()

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

    reply = response.choices.message['content']

    with open(srtZhFileNameAndPath, "w", encoding="utf-8") as file:
      file.write(reply)
    print(f"Translation complete! The translated subtitles are saved in {srtZhFileNameAndPath}")

# 使用示例
srtEnFileNameMergeAndPath = './1fr.srt'
srtZhFileNameAndPath = './1zh.srt'
srtFileGPTtran(srtEnFileNameMergeAndPath, srtZhFileNameAndPath)

### 关键点解释:

1. **构建消息格式**:
   messages=[
       {"role": "system", "content": "You are a helpful assistant."},
       {"role": "user", "content": question_content}
   ]
   `role` 参数有 `system` 和 `user`,分别表示系统信息和用户输入。`content` 参数包含实际内容。

2. **从响应中获取内容**:
   reply = response.choices.message['content']
   这确保我们正确提取到了 GPT-3.5-turbo 返回的文本。

3. **错误处理**:
   你可能还想考虑添加错误处理机制,以防 API 请求失败。如:
   try:
       response = client.chat.completions.create(...)
       # 处理响应
   except Exception as e:
       print(f"An error occurred: {e}")

### 注意事项:

- 确保你有正确的 API 访问权限,并且 `g4f` 模块已经正确配置。
- 确保输入和输出文件路径是正确的。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 怎么才能让gpt4free帮我翻译srt字幕文件呢?