LoginSignup
15
19

Llama 3 で無料の英会話練習アプリを作って、ロールプレイし放題

Last updated at Posted at 2024-04-26

llama3-english.png

本稿の概要

Llama 3 とは

  • Meta 社が 2024 年 4 月 18 日にリリースした、オープンソース LLM の最新版です。
  • モデルをダウンロードでき、ローカル実行することができます。
  • 本稿作成時点では、ローカル実行に適したサイズの 8B モデルと、より高い能力を持つ 70B モデルがあります。

Meta Llama 3

Llama 3 をローカルで動かすには、Ollama が簡単で便利

Llama 3 をローカル実行するのはとても簡単です。

下記から Ollama をダウンロードして、

下記のコマンドを実行するだけです。

$ ollama run llama3

Ollama とは

CLIツールです。Ollama とローカル実行可能な LLM との関係は、docker コマンドと docker イメージの関係に似ています。

このため、例えば Llama 3 モデルをローカルにダウンロードするだけであれば、下記のコマンドになります。

$ ollama pull llama3

また、Dockerfile に似た Modelfile という仕組みもあります。Modelfile を作って、ベースとなるモデルに temperture などのパラメータや SYSTEM メッセージなどを与え、プロンプトをカスタマイズしたモデルを定義することができます。

Customize a prompt

また、Llama 3 の他にも、Ollama がローカル実行できる LLM については下記に一覧があります。

Streamlit でチャット用の UI を付ける

本シリーズの目的は、英会話練習アプリを作ることですので、ChatGPT 風の UI を付けることにしましょう。

Streamlit とは

LLM アプリケーションに簡易な UI を付ける際によく用いられる Python ライブラリには、Gradio や Streamlit などがありますが、本稿では Streamlit を用いることとします。

Streamlit

下記で Streamlit をインストールします。

$ pip install streamlit

Python コードの例

下記が Llama 3 を ollama でローカル実行し、Streamlit で ChatGPT 風の UI を付けた場合の Python コードの例です。

$ pip install ollama

本シリーズの 3本目の記事 に登場する下記の AI アバターの画像を使うこととします。

asian-women-in-ny.png

import ollama
import streamlit as st

st.title("Your Personal English Coach")

# Add a header image
header_image = 'asian-women-in-ny.png'
st.image(header_image, caption='Lisa', use_column_width=True)

if "messages" not in st.session_state:
    st.session_state["messages"] = [{"role": "assistant", "content": "How can I help you?"}]

### Write Message History
for msg in st.session_state.messages:
    if msg["role"] == "user":
        st.chat_message(msg["role"], avatar="🧑‍💻").write(msg["content"])
    else:
        st.chat_message(msg["role"], avatar="👩").write(msg["content"])

## Generator for Streaming Tokens
def generate_response():
    response = ollama.chat(model='llama3', stream=True, messages=st.session_state.messages)
    for partial_resp in response:
        token = partial_resp["message"]["content"]
        st.session_state["full_message"] += token
        yield token

if prompt := st.chat_input():
    st.session_state.messages.append({"role": "user", "content": prompt})
    st.chat_message("user", avatar="🧑‍💻").write(prompt)
    st.session_state["full_message"] = ""
    st.chat_message("assistant", avatar="👩").write_stream(generate_response)
    st.session_state.messages.append({"role": "assistant", "content": st.session_state["full_message"]})

実行方法

下記のように、Streamlit アプリケーションは streamlit コマンドを使って実行します。

$ streamlit run llama3-chat.py

英会話練習アプリのイメージ

前述の streamlit コマンドを実行すると、下記のようなチャット風インターフェースがローカルのブラウザで起動します。

llama3-streamlit.png

上記に何かメッセージを入力すると、下記のように Llama 3 がチャットに返信してくれています。

llama3-chats.png

前述のコードでは、特に背景となるアバター設定をしていないにも関わらず、空気を読んで返答してくれていますね。十分に実用的です。

まとめ

いかがでしたでしょうか?

LLama 3 をローカル実行させるのは非常に簡単です。また、ChatGPT 風の UI を付けた LLM アプリケーションを作成するのも非常に簡単です。

次回以降の記事では、上記の英会話練習アプリをさらに充実させていきましょう。

続編はこちら

15
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
19