マイベストプロ高知

コラム

請求書自動化サービスで使われている技術ご紹介(第3回)

2024年2月22日

テーマ:テクノロジー

コラムカテゴリ:ビジネス

今回は少しコードに踏み込んで、特にchatGPTのAPI部分について解説します。
前提として、既にGoogleOCRのAPI で、既に請求書のPDFファイルから請求処理に関連するテキストが取得された状態で、GoogleOCRのAPIで“Text”として読み取られたテキストデータ(改行キーで区切られた文字列の集合)が順番に1列に並んでいる状態です。

下に切れ切れで恐縮ですが、実際に今回のプログラムでchatGPTのAPIの個所についてご説明します。使用言語はpythonです。

私が最も驚いたのが、最後に示したJSON形式の配列functionへのchatGPTからセットされる値です。このような「欲しいデータの入れ物」を用意するだけで、chatGPTが必要なデータを返してくれ、そのデータを取得するためのロジックは書かなくていいのです。
これ本当にすごいと思いました。

from openai import OpenAI
import openai
# 必要なライブラリをインポートします。

client = openai.OpenAI(api_key=os.environ['OPENAI_API_KEY'])
# OpenAIに認証を行います。'OPENAI_API_KEY'は、OpenAIのAPIを使用するために必要なプリペイド登録を通じて取得するAPIキーです。ここでは、初期化されたOpenAIクラスのインスタンスを変数clientに格納します。このclientを通じてAPI操作を行います。

function_info = functions_mapping['請求書']

functions_mapping = {
"請求書": functions[0],
"領収書": functions[1]
# 他のキーワードと関数のマッピングも追加可能です。
}

response = client.chat.completions.create(
model="gpt-4",
messages=messages,
max_tokens=2048,
temperature=0,
function_call={"name": function_info["name"]},
functions=[function_info]
)
# ここで、APIに対するリクエストを送信します。
# `model="gpt-4"`: 使用するモデルを指定します。
# `messages=messages`: Google OCRで取得した文字列の配列を指定します。
# `max_tokens=2048`: 生成するテキストの最大トークン数を指定します。
#(色々試してこの値になりました。小さいとよく異常終了します。)
# `temperature=0`: テキスト生成時のランダム性の度合いを0に設定します。
#すいません。この値あまり良く理解できていません。
# `function_call={"name": function_info["name"]}`: 指定された関数を呼び出します。

if hasattr(response.choices[0].message, 'function_call'):
arguments_str = response.choices[0].message.function_call.arguments
# 応答が特定の関数呼び出しに関連する情報を含むかどうかを確認します。

# 以下にfunctions APIの構造を示します。
functions = [
{
"name": "get_invoice_information",
"description": "請求書情報の抽出。OCRで得られたテキストから、請求日、請求番号、請求先、請求品目、総額、銀行情報、住所、会社名、連絡先を抽出します。",
"parameters": {
"type": "object",
      "properties": {
"invoice_date": {
"type": "string",
"description": "請求日" },
},
# パラメータの詳細(請求書から取り出したい情報)
},
"required": ["invoice_date"]
}
}
]

この記事を書いたプロ

柳井康伸

ITに関する豊富なノウハウをもとに業務効率化を支援するプロ

柳井康伸(Digi&Dev 合同会社)

Share

関連するコラム

柳井康伸プロへの
お問い合わせ

マイベストプロを見た
と言うとスムーズです

お電話での
お問い合わせ
090-1437-7935

勧誘を目的とした営業行為の上記電話番号によるお問合せはお断りしております。

柳井康伸

Digi&Dev 合同会社

担当柳井康伸(やないやすのぶ)

地図・アクセス

柳井康伸プロのコンテンツ

  1. マイベストプロ TOP
  2. マイベストプロ高知
  3. 高知のビジネス
  4. 高知の経営コンサルティング
  5. 柳井康伸
  6. コラム一覧
  7. 請求書自動化サービスで使われている技術ご紹介(第3回)

© My Best Pro