APIとは?
APIとは、「Application Programming Interface」の略で、ソフトウェア同士が情報をやり取りするための規約です。
例えば、Web APIというものがあります。これは、Webシステムの機能を外部から使うための窓口です。
Web APIとは?
Web APIは、Webを介してソフトウェアの機能を別のソフトウェアやサービスなどと共有する仕組み。
例えば、
- TwitterやFacebookなどのSNSサービス
- 自分のサイトに投稿した内容をWeb APIを使って他のサイトにも同時に投稿できるようにする
Web APIは、HTTPなどのWeb技術を応用して作られており、APIと呼ばれる規約に従って情報をやり取りします。
Web APIを利用することで、自分のWebサイトやWebサービスに他のソフトウェアが提供する機能を組み込んだり、逆に自分のソフトウェアが提供する機能を他のWebサイトやWebサービスに公開したりできます。
APIを利用する手順は?
APIを利用するには、以下の手順が必要です。
APIを提供しているプログラムやサービスにアクセスするためのURI(Uniform Resource Identifier)を取得します。
URIはリソース(参照に値するデータの塊)ごとに1つ(またはそれ以上)割り振られています。
APIを呼び出すためのリクエストを作成します。
リクエストには、URIやパラメータ(リソースに対する操作や条件など)、ヘッダー(リクエストやレスポンスの情報など)、ボディ(送信するデータなど)などが含まれます。
リクエストを送信し、APIからレスポンスを受け取ります。
レスポンスには、ステータスコード(リクエストが成功したかどうかなど)、ヘッダー、ボディ(返されるデータなど)などが含まれます。
レスポンスを解析し、必要な処理や表示を行います。
APIの利用方法は、APIごとに異なる場合があります。
具体的な例として、OpenAIが提供しているChatGPT APIの使い方を紹介します。
- ChatGPT APIを利用するには
- OpenAIのアカウントを作成
- APIキーを発行
- ChatGPT APIではリクエストとレスポンスを扱うことができる
PythonとTkinterでChatGPT APIを使ってチャットするサンプルコードです。
import openai
import tkinter as tk
# ウィンドウの作成
root = tk.Tk()
root.title('ChatGPT WebApp')
root.geometry('850x810')
root.resizable(1, 1)
root.config(bg='gray40')
root.attributes("-topmost", True)
# フォントサイズを設定
font_set = ('A1ゴシック',14)
openai.api_key = "sk-・・・※ここにAPI KEYを入力※"
def submit():
question = text_input.get("1.0", tk.END)
if question != "\n\n":
res = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": question},
]
)
res_content = res["choices"][0]["message"]["content"]
result='🤔User: ' + question + '\n'+ '★GPT:' + res_content + '\n'
text_widget.insert(tk.END, result)
print(res_content)
text_input.delete(1.0, tk.END)
else:
print("空欄なので処理しない")
text_input.delete(1.0, tk.END) # 改行が残る場合の対策
#Key操作
def key_event(e):
print(e.keysym)
if e.keysym == 'Return':
submit()
#KeyPress
root.bind("<KeyPress>", key_event)
# テキストウィジェットを作成
text_widget = tk.Text(root, bg='gray20', fg='white', font=font_set,height=30)
text_widget.grid(row=0, column=0,padx=10,pady=5,ipadx=10)
#テキストボックス(entry)の作成
text_input = tk.Text(root, bg='gray30', fg='white', font=font_set,height=10)
text_input.grid(row=1, column=0,padx=10,pady=5,ipadx=10)
# ウィンドウのループ処理
root.mainloop()
このコードを実行すると画面が表示されるので、左図のように下側のテキストボックスに質問を書いてEnterを押してください。
しばらくして、右図のような回答が返ってきます(下のテキストボックスはクリアされる)。