Mybestpro Members

柳井康伸プロは高知放送が厳正なる審査をした登録専門家です

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

柳井康伸

柳井康伸

テーマ:テクノロジー

今回は少しコードに踏み込んで、特に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"]
}
}
]

リンクをコピーしました

Mybestpro Members

柳井康伸
専門家

柳井康伸(ITコンサルタント)

Digi&Dev 合同会社

「ITで生産性を高めたいが社内に分かる人がいない、何度か試したけどうまくいかない、外部に頼むとお金がかかる割に……」というお悩みを抱える方に、広く知られたソフトウェアを使って業務効率化をご支援します。

柳井康伸プロは高知放送が厳正なる審査をした登録専門家です

関連するコラム

プロのおすすめするコラム

コラムテーマ

コラム一覧に戻る

プロのインタビューを読む

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

柳井康伸プロへの仕事の相談・依頼

仕事の相談・依頼