API

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を押してください。

しばらくして、右図のような回答が返ってきます(下のテキストボックスはクリアされる)。

タイトルとURLをコピーしました