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
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のモデルバージョンにより取得情報の精度は意図的に低くなっております。
- アイディアやリクエストがあれば機能追加してみたいと思います。