OpenAIのCharGPT APIをつかったプログラム会社名やURLをいれるとCharGPTがネットから検索してきて企業情報をJSONで書き出してくれます。

ChatGPT APIをつかって、ChatGPTに会社名をいれると、ネットで検索してきて企業情報を自動に取得してDB化させるプログラムを書いた。

プログラムのポイント

1.プロンプトメッセージの読み込み

プロンプトを簡単に変更出来るように、初期プロンプトは外部ファイル化しました。 prompt_message.txt に書いておきます。

これで簡単にプロンプトを適宜変更して、アプリの性能を上げて行くことができます。

この入力をWEBフォームなどのWEB・UIやiPhoneアプリに埋め込んだり、また予め用意したプリセットをユーザーに選択させるなどをすればカテゴリー特化したサービスやアプリケーション化ができるかと。

このあたりは柔軟な発想力や、UI/UXデザイン力が役立ちそうですね。

2.ユーザー入力の取得

このChatGPTのプログラムは、ターミナルからPythonで起動して、実行するとpython上のプログラムがユーザーに入力を求めます。

ユーザーは会社名または会社のURLをを入力すると、その内容をAPIでChatGPTに送りBingでWEB検索します。

3.JSONデータの保存処理

OpenAI APIから受け取った応答内容から更に、JSONの記述がある箇所を抜き出してファイルに保存します。

抽出したJSONデータは「response_data.json」で保存。

このデータは後で分析や別途プログラムで参照など様々に利用できます。

まとめ

簡易ではありますが、ChatGPTを活用したアプリケーションの作り方の基本的な型です。

LYNでは、より精度を高めたり、ビジネスや業務改善や発展に役立つアイディアや方法を沢山もっております。 興味あるかたは営業、エンジニア、デザイナーなどに役職にかかわらずご連絡ください。


Python実装コード

config.ini

[openai]
api_key = sk-○○○○○○○○○○○○○ #ここにAPIキーを入れる

prompt_message.txt

あなたはデータ収集が得意なプロです。
入力されたサイトから(または社名から)、info@ドメインなどのお問い合わせのメールアドレスを探してJSONデータを生成して。メールアドレスやデータが見つからない項目は、「調査時データ不明」としてください。

JSON形式は以下を参考にしてください。

    ```JSONフォーマット
    {
    "会社名": "○○○○○○○○○",
    "サイトURL": "https://○○○○○○",
    "お問い合わせメールアドレス": "○○@○○○○",
    ....

    ```

    □取得するデータ
    データを収集した日時
    サイトURL
    お問い合わせページURL
    お問い合わせメールアドレス
    会社名
    法人番号
    代表名
    本社住所
    代表電話番号
    会社概要
    従業員数
    資本金
    上場区分
    直近の売り上げ

    □注意事項
    ・データ収集日時は、今の日時と時間を入れてください。例 2024年01月05日13時12分。日付日時は、リサーチした今の日時です。
    ・会社概要には、この会社の事業内容や特徴、最近のニュースなどを書いてください。
    ・入力の受付は、複数のサイトも受け付けます。その際には順番に処理を進めていきます)
    ・日本語でやり取りを進めます。
    ・上場区分は、上場してい市場、未上場をいれてください

app.py(python)

import openai
import configparser
import os
import json
import re

def load_config(filename):
    """
    指定されたINIファイルから設定を読み込む。
    :param filename: 設定ファイル名
    :return: 設定辞書
    """
    config = configparser.ConfigParser()
    config.read(filename)
    return config

def load_prompt_message(file_path):
    """
    指定されたテキストファイルからプロンプトのメッセージを読み込む。
    :param file_path: テキストファイルのパス
    :return: ファイルから読み込んだテキスト
    """
    with open(file_path, 'r', encoding='utf-8') as file:
        return file.read()

def initialize_openai(api_key):
    """
    APIキーを使用してOpenAI APIを初期化する。
    :param api_key: OpenAI APIキー
    """
    os.environ["OPENAI_API_KEY"] = api_key
    openai.api_key = api_key

def save_json_data(data, file_name):
    """
    JSONデータをファイルに保存する。
    :param data: 保存するデータ
    :param file_name: 保存するファイルの名前
    """
    with open(file_name, 'w', encoding='utf-8') as file:
        json.dump(data, file, ensure_ascii=False, indent=4)

def extract_json_from_text(response_text):
    """
    応答テキストからJSONデータを抽出する。
    :param response_text: 応答テキスト
    :return: 抽出されたJSONデータ、またはNone
    """
    start_index = response_text.find("{")
    end_index = response_text.rfind("}")
    if start_index != -1 and end_index != -1 and start_index < end_index:
        json_str = response_text[start_index:end_index + 1]
        try:
            json_data = json.loads(json_str)
            return json_data
        except json.JSONDecodeError:
            return None
    return None

def main():
    """
    メインの関数。設定を読み込み、ユーザーの入力に基づいてOpenAI APIを呼び出し、
    応答を処理して、必要に応じてJSONデータを保存する。
    """
    config = load_config('config.ini')
    api_key = config['openai']['api_key']

    initialize_openai(api_key)

    initial_message = load_prompt_message('prompt_message.txt')

    user_input = input("会社名を入力してください: ")

    response = openai.ChatCompletion.create(
        # model="gpt-3.5-turbo",
        model="gpt-4",
        messages=[
            {"role": "system", "content": initial_message},
            {"role": "user", "content": user_input}
        ]
    )

    response_content = response.choices[0].message['content']
    print(response_content)

    json_data = extract_json_from_text(response_content)
    if json_data:
        save_json_data(json_data, 'response_data.json')
        print("JSONデータを 'response_data.json' に保存しました。")
    else:
        print("応答にJSONデータが含まれていません。")

if __name__ == "__main__":
    main()
  • 上記のプロンプト内容とChatGPTのモデルバージョンにより取得情報の精度は意図的に低くなっております。
  • アイディアやリクエストがあれば機能追加してみたいと思います。

資料請求・無料相談はこちらから

ITのプロに相談してビジネスの成長スピードを上げてみませんか?

カンタン!1分でお問い合わせ

 フォームで問い合わせする