0
0

openAIのレスポンスを翻訳

Posted at

概要

  • OpenAIのAPIを使ってレスポンスを英語で返してもらい、トークン量の節約をします。
  • レスポンスをDeepLのAPIを使って日本語翻訳して出力します。

前提条件

  • OpenAIの各種IDやAPIキーを取得している事。
  • DeepLのAPIキーを取得する事。

開発環境

  • python
  • VScode

使用するモジュール

インポート
import os
from openai import OpenAI
import markdown
import requests

OpenAIのモデルについて

OpenAIにアクセスし、英語のレスポンスを受ける

OpenAI_API
## Markdownファイルを読込み、txt形式で返す関数
def markdown_txt(input_file_path):
    with open(input_file_path, 'r', encoding='utf-8') as markdown_file:
        markdown_content = markdown_file.read()
    return markdown_content

## マークダウンファイル形式に保存する関数
def save_to_markdown(filename, content):
    with open(filename, 'w') as file:
        file.write(content)

jp_txt_input = markdown_txt([マークダウンのファイルパス])

set_en="すべての回答を英語でお願いします。"

## OpenAIにアクセス
client = OpenAI(api_key=[OpenAiのAPIキー],organization=[組織id],project=[プロジェクトid])
stream = client.chat.completions.create(
    model="gpt-4o-mini", ##モデルを設定
    messages=[
      {"role": "system", "content": set_en},
      {"role": "user", "content": jp_txt_input}],
    stream=False,
)

## OpenAIから返ってきた内容(英語)をマークダウン形式で保存
en_post_txt = stream.choices[0].message.content
save_to_markdown(f'[保存先のファイルパス].md', en_post_txt)

返ってきた英語の内容をDeepLで翻訳し、日本語で出力

DeepL_API
input_text = en_post_txt
input_lang = 'EN'
target_lang = 'JA'

# パラメータの指定
params = {
  'auth_key': [DeepLのAPIキー],
  'text': input_text,
  'source_lang': input_lang,
  'target_lang': target_lang
}

# リクエストを投げる
jp_request = requests.post("https://api-free.deepl.com/v2/translate", data=params)
jp_result_json = jp_request.json()

jp_post_content=jp_result_json['translations'][0]['text']

## MDとして出力
save_to_markdown(f'[出力先ファイルパス].md',jp_post_content)

最後に

  • モデル:gpt-4o-miniの場合、日本語出力に比べ英語出力の方が約2割ほどのトークン量削減ができました。
  • OpenAiのモデルによってトークン量や値段が異なります。
モデル max output tokens 入力(単位:ドル/1M tokens) 出力入力(単位:ドル/1M tokens)
gpt-4-mini 16,384 0.15 0.6
gpt-4o 4,096 5 15
gpt-4-turbo 4,096 10 30
gpt-4 8,192 30 60
gpt-3.5-turbo 16,385 0.5 1.5

上記の表は2024/08時点でまとめた表です。
詳細は公式で確認してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0