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を押してください。
しばらくして、右図のような回答が返ってきます(下のテキストボックスはクリアされる)。


 
  
  
  
  
