---
title: Replicate APIとLINE Messaging APIで_画像生成Botサービスを作ろう
tags: 
author: [一般社団法人未完](https://convert.docswell.com/user/mikan_foundation)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/KJ42GP13E1.jpg?width=480
description: Replicate APIとLINE Messaging APIで_画像生成Botサービスを作ろう by 一般社団法人未完
published: September 26, 23
canonical: https://convert.docswell.com/s/mikan_foundation/5RX9JR-2023-09-26-190253
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/KJ42GP13E1.jpg)

Replicate APIとLINE Messaging APIで
画像生成Botサービスを作ろう
2023/09/26@未完Study
一般社団法人未完 西村航


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LE1MD9GZ7G.jpg)

Replicate API とは？
生成系AIモデルのOSSプラットフォーム、Replicateが提供するプラットフォーム上の生成系AIを
Web API の形でアクセスできるようにしたもの。
色々なモデルが利用可能なためllama2をベースにしたものや、Stable Diffusion といった生成系AI
モデルにPythonやNode.js といったプログラミング言語でアクセスでき、推論や画像生成を行うこと
ができます。


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GEW3YQK6E2.jpg)

LINE Messaging API とは？
LINEが提供するLINE BotとしてLINEのユーザーとの対話をプログラミング言語によるプログラムで
アクセスできるようにしたWeb API。ユーザーとのメッセージ送受信に加え、リッチメニューやカルー
セルなどのLINEがAPIとして提供している機能を利用可能です。
SDKとしてPythonやJava、Node.jsなどのライブラリが公開されており（公式・非公式が混在していま
すプロジェクト）、ある程度好きな言語で開発が可能になっています。


# Page. 4

![Page Image](https://bcdn.docswell.com/page/47ZVXWZRE3.jpg)

前提環境
●
●
●
Pythonのランタイム（Python 3.9~）がインストール済
Visual Studio Codeがインストール済
ファイアウォールなどの設定で外部と通信が可能


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YJ654GZ17V.jpg)

Replicate API を触ってみよう！
Pythonで動かすReplicate APII


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ5YQVWLJ4.jpg)

Replicate API を触ってみよう！
Replicateアカウント登録とReplicate API のトークン取得
1.
2.
3.
https://replicate.com/signin にアクセス
GitHubアカウントでログイン（ない場合は作成してください）
https://replicate.com/account/api-tokens ページのDefaultと書いてあるトークンを取得してく
ださい


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LE35VD4DJ5.jpg)

Replicate API を触ってみよう！
Pythonプロジェクトの作成
1.
2.
3.
4.
5.
6.
7.
新しくプロジェクトフォルダを作成し、そのフォルダをVisual Studio Codeで開きます。
フォルダ直下に「.env」というファイルを作成し、その１行目に
REPLICATE_API_TOKEN=`**********`と記述し、*（アスタリスク）部分を先程のAPI TOKEN
に置き換えてください。
Visual Studio Code の Terminal を立ちあげてください（Ctrl+J / Cmd + J）
python -m venv .venv を実行してください
source .venv/bin/activate を実行してください
pip install replicate / pip install python-dotenv と記述します
以上でプロジェクトの準備は終了です


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8EDD8PQ2EG.jpg)

Replicate API を触ってみよう！
Replicate API の実行準備
1.
2.
3.
4.
main.py をプロジェクト上に作成します
import文と呼ばれる、外部のパッケージを読み込むための記述をします
１行目に「import replicate」、２行目に「from dotenv import load_dotenv」と記述してくださ
い。
３行目には「load_dotenv()」のみ記載してください。
これでReplicate API の利用と、APIトークンをReplicateに読み込ませることができるようにな
りました。


# Page. 9

![Page Image](https://bcdn.docswell.com/page/V7PX8NLLE8.jpg)

Replicate API を触ってみよう！
Replicate API の実行
1.
5行目以降に以下のコードを記述してください
images = replicate.run(
&quot;stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478&quot;,
input={&quot;prompt&quot;: &quot;a cat eating a hamburger&quot;}
)
for image in images:
print(image)
2. Terminalから、python main.py でPythonプログラムを走らせてください
3. 出力されたURLを開くと、画像が表示されるはずです


# Page. 10

![Page Image](https://bcdn.docswell.com/page/2JVLNKQ67Q.jpg)

解説
Replicate API の使い方について
Replicate API を走らせる方法は基本的にかなりシンプルです。 replicate.run関数の第一引数に利用したいモ
デルを指定、第二引数には連想配列の形で画像生成のプロンプトを入力します。
モデルごとに第二引数の値は代わりますが、 https://replicate.com/explore に並んでいるモデルを開き、「 API」
の項目を開くと、最低限の使い方が載っています
images = replicate.run(
&quot;stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478&quot;,
input={&quot;prompt&quot;: &quot;a cat eating a hamburger&quot;}
)


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5EGXKQW2JL.jpg)

解説
Replicate API の返し値について
replicate.run()が返す値はモデルによって異なりますが、 stable diffusionや一部のモデルでは Itreator（イテレー
ター）の形式で複数の画像やデータを返す場合があります。
そのためfor in 文などで配列の中身を取得し、コンソール画面などに出力する必要があります。
for image in images: #取得したimagesのiteratorから画像を取り出して出力する
print(image)


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4JQ8NK397P.jpg)

Replicate API と対話できるWeb API を作ろう
Pythonで動かすReplicate API


# Page. 13

![Page Image](https://bcdn.docswell.com/page/K742GPNRJ1.jpg)

Replicate API と対話できるWeb API を作ろう
Flaskを利用したAPIモックの開発準備
1.
2.
3.
flaskをインストールします。Terminalで pip install flask を実行してください
main.pyをコピーしてapp.pyを作成します
３行目以降に追加のimport文を記述します。APIでデータをやり取りするためのパッケージを読
み込みます
from flask import Flask, request, send_file
import requests
import io


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LJ1MD95VEG.jpg)

Replicate API と対話できるWeb API を作ろう
Flaskを利用したAPIモックの開発①
1.
flask初期化を行います。 load_dotenvの次の行から以下のように記述してください
app = Flask(__name__)
@app.route(&quot;/&quot;)
def index():
return &quot;Hello, World!&quot;
if __name__ == &quot;__main__&quot;:
app.run(debug=True)
2. python app.py を実行するとローカルでWebサーバーが立ち上がります。
http://127.0.0.1:5000/ にアクセスしてみてください


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GJW3YQ53J2.jpg)

Replicate API と対話できるWeb API を作ろう
Flaskを利用したAPIモックの開発②
1.
2.
3.
4.
5.
6.
クエリパラメーター を使い、promptを入力し、画像をウェブ上で表示します。
index関数の中身を変えていきます。 requestからクエリを取得します（今回は promptというクエリ）
promptで渡されたクエリを replicate api に渡します。
取得した画像 URLの配列から１つ取り出します
URLから画像を取得
flaskのsend_file関数でウェブ上に表示します。


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4EZVXWNGJ3.jpg)

Replicate API と対話できるWeb API を作ろう
Flaskを利用したAPIモックの開発②
@app.route(&quot;/&quot;)
def index():
prompt = request.args.get(&quot;prompt&quot;) #promptクエリを取得
if prompt is None:
return &quot;Please set prompt parameter.&quot; #promptが空の場合エラーを表示
images = replicate.run(
&quot;stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478&quot;,
input={&quot;prompt&quot;: prompt}
)
#promptから生成された画像URLの配列を取得
r = requests.get(images[0],allow_redirects=True) #URLから画像そのものを取得
return send_file(
io.BytesIO(r.content),
mimetype=&#039;image/png&#039;
) #send_file関数で画像を表示


# Page. 17

![Page Image](https://bcdn.docswell.com/page/Y7654G8QEV.jpg)

Replicate API と対話できるWeb API を作ろう
こんな感じ
http://127.0.0.1:5000/?prompt=%22a%20dog%20eating%20food%22


# Page. 18

![Page Image](https://bcdn.docswell.com/page/G75YQV9274.jpg)

次回：LINE Bot 連携を行います


