ローカル環境の生成AIが欲しいんだけど？

秘伝のレシピとか、持ち込み前の小説とか、ブラッシュアップのために生成AIを使いたいけど、情報を吸い上げられるのはヤダな...
自分のパソコンの中だけで動く生成AIがあればいいなぁ。

そんな悩みを解決するため、いろいろ調べていくと辿り着くうちのひとつ。

### 　"`Ollama + Open WebUI`"

「ターミナルデコレラノコマンドヲウチマス」
```:ターミナル
brew install ollama
ollama run example

docker pull ghcr.io/open-webui/open-webui:main
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
```


どゆこと？ターミナルって何？
「あーもうよくわかんね調べた時間損した！」

という強い憤りを感じながら**Netflix**を楽しんでいるアナタに救済を。
このページにアクセスしていただき、ありがとうございます。

<br>
ここではOllamaとOpen WebUIの仕組み、概念を理解していただくことを目的としています。
未知のものを理解することで、導入のハードルが一気に下がると考えているからです。<br>
この記事が皆さんのお役に立てれば幸いです。

それでは、いってみましょう！
<font color="blue">※本記事は理解に重きを置いているので、細かい仕組み等は無視しています。そのため、厳密には正しくない表現もあります。
また、詳しい導入方法については記載していません。ご了承ください。</font>



## Ollama とは？

そもそもの大前提として、生成AIを使うためには膨大な知識を学習した`LLM`というシステムが必要です。
いわゆる、**物知り博士**ですね。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/facd8b69-7036-adbe-8a50-858f0b8107da.png">　LLM

生成AIを利用するとは、この博士に質問し回答をもらうことです。
しかし、博士の知識レベルは**人智を超越してしまっている**ので、我々人間には何を言っているのかサッパリ分かりません。こまった。
<br>

そこで登場するのが、博士専属の通訳者です。これが`Ollama`です。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/fc222aa3-69c7-4079-86c2-c798cd4fee84.png">　Ollama

通訳者が間に入ってくれるおかげで、会話が成立するようになりました。
<img width="1200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/430a7570-2ac6-4959-93e4-9e28ffeb0cd8.png">
<br>
憤りを感じる。

ただ、これでは通訳者とメールのやり取りしかできない状態です。せっかくだし、**テレビ電話で視覚的に**やりとりしたいですよね？
このテレビ電話の役目を果たすのが`Open WebUI`です。

## Open WebUI とは？
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/e46a512f-da90-1a99-f4aa-29ee5c2d3eaf.png"> Open WebUI

生成AIを使うユーザーと通訳者(Ollama)を視覚的に繋いでくれる役割を果たします。
必須ではありませんが、とても便利なので導入することを強くお勧めします。
使わなくても問題ないのは**ITガチ勢**だけです。

他の生成AIと同じく、クロームなどのブラウザで使用します。
日本語にも対応しており、シンプルで使いやすいことが特徴です。

**OllamaとOpen WebUIを組み合わせることで、ローカル(情報が外に出ない環境)で生成AIを使用できるようになります。**

## 一連の流れ

最後に、ローカル環境で生成AIを動かした時の流れを確認していきましょう。

・通訳者(Ollama)に質問を投げかけます。身振り手振りも伝わるように、テレビ電話(Open WebUI)を使いましょう。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/e46a512f-da90-1a99-f4aa-29ee5c2d3eaf.png">　「おなかすいた」
<br>
・通訳者はユーザーの質問を博士(LLM)に伝えます。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/fc222aa3-69c7-4079-86c2-c798cd4fee84.png">
「体内のエネルギー供給が不足し、血糖値の低下に伴う視床下部の摂食中枢が活性化し、グレリンなどのホルモン分泌が増加した結果、摂食行動を促す感覚が顕在化している状態です。」　

<br>
・博士は通訳者に回答を伝えます。<br>
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/facd8b69-7036-adbe-8a50-858f0b8107da.png">

「空腹感の認知は、生体内のエネルギーホメオスタシス維持において重要な役割を果たしており、視床下部弓状核を介した摂食中枢と満腹中枢の調節により、内因性ホルモン（例: グレリン、レプチン）の分泌変動が、神経伝達物質を通じて意識レベルでの感覚として表出する、進化的に保存された生理的現象である。」

<br>
・通訳者がテレビ電話でユーザーに回答します。<br>
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/e46a512f-da90-1a99-f4aa-29ee5c2d3eaf.png"> 「空腹を感じるのは自然なことです」

以上が一連の流れになります。

## おまけ: 実際にOllamaとOpen WebuUIを導入するには？
前提条件として以下のものが必要です。
- それなりのスペックがあるPC
- ターミナル、もしくはコマンドプロンプトの基礎知識
- Dockerの基礎知識

<br>
<br>
<br>
<br>
<br>
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3685511/e4dcd72a-9cdc-a1e2-4138-a8dcb24ecc5a.png">
<br>
<br>
<br>

今回はOllamaとOpen WebUIの仕組みや概念を説明しました。
ここまで読んでいただき、ありがとうございました！