OllamaとdifyでTanukiを試す

#はじめに
タイトルがあれですが、タイトル通り、Ollama+dify環境があるので、Tanukiを試すことに。検証なので、適当に設定しています。

## 準備
### Tankui-8Bのダウンロード

https://huggingface.co/neody/Tanuki-8B-Instruct-gguf/tree/main

hf_downloadを使って取得。回線遅い...

```
$ pip install hf_download
$ hf_download neody/Tanuki-8B-Instruct-gguf Tanuki-8B-Instruct-q8.gguf
INFO:hf_download.downloader:Starting download for Tanuki-8B-Instruct-q8.gguf from neody/Tanuki-8B-Instruct-gguf
Tanuki-8B-Instruct-q8.gguf: 100%|████████...█████████| 7.98G/7.98G [25:35<00:00, 5.20MB/s]
INFO:hf_download.downloader:File downloaded to [保存先パス]
```

### OlamaのModelfileの準備
以下の内容を`Modelfile`に保存。`[保存先パス]`は、モデルをダウンロードしたときに`INFO`として出力されたものを使用。

```text Modelfile
FROM [保存先パス]

PARAMETER repeat_penalty 1.0
PARAMETER temperature 0.1
PARAMETER top_k 0
PARAMETER top_p 1.0
PARAMETER stop "<EOD|LLM-jp>"

TEMPLATE """{{ if .System }}{{ .System }}{{ end }}{{ if .Prompt }}

### 指示:
{{ .Prompt }}{{ end }}

### 応答:
{{ .Response }}<EOD|LLM-jp>"""
SYSTEM """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"""
```

### Ollamaへ取り込む
下記のコマンドでOllama用のmodelを作成
```
$ ollama create tanuki:8b -f Modelfile
transferring model data
using existing layer sha256:bcfa1b7153a7f2dc8b059e37c69b3f3af636f05060b91ced780df02ed5c76d7f
creating new layer sha256:a4e0782577a830dbeb8403285a149e70b5cdc22cbd149b733084be91a229abe2
creating new layer sha256:7062f767f7a9e848e484bc1df8c7b13fa08482ba42ffc3eba985d8f7a7e00eed
creating new layer sha256:015be5bf83215a3cfe0918304447348731d6421e9d1e840c5c25938a88ea9fb3
creating new layer sha256:81f3094f34bb7f73a76bd105dbbfb60806bbfbe3193e77a6ec02036df7126266
writing manifest
success
```

### Ollamaに登録されているか確認
一番最初の行に登録されていました。
```
$ ollama list
NAME                         	ID          	SIZE  	MODIFIED
tanuki:8b                    	59d718bb71fe	8.0 GB	18 minutes ago
phi3:14b                     	1e67dff39209	7.9 GB	3 days ago
mistral:latest               	2ae6f6dd7a3d	4.1 GB	3 days ago
nomic-embed-text:latest      	0a109f422b47	274 MB	3 days ago
snowflake-arctic-embed:latest	21ab8b9b0545	669 MB	3 days ago
phi3:latest                  	64c1188f2485	2.4 GB	3 days ago
llama-3-youko-8b:latest      	c0716d92fe8c	8.5 GB	4 days ago
llava:13b                    	0d0eb4d7f485	8.0 GB	5 days ago
gemma:latest                 	a72c7f4d0a15	5.0 GB	5 days ago
codegemma:latest             	0c96700aaada	5.0 GB	5 days ago
llama3:latest                	365c0bd3c000	4.7 GB	7 days ago
```

### difyのチャットボットの設定
とりあえず、画像のような感じで準備してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/b62784dd-87cd-661a-dc31-7293de7ab75d.png)

### モデルを選ぶ
tanuki:8bを選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/6f3984bf-cd8b-cbfc-e78e-3d915ea7c7a5.png)

### Start Chat
チャットを開始

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/176a6c02-d164-5d99-f662-ef18fc41359e.png)

こんな感じでやりとりができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/04da851d-74f4-7071-5261-11c8552fc256.png)

とりあえず、軽快に動くことは確認した。ナレッジと組み合わせRAGを構築するさいの最後のテキスト生成プロセスで使えないか検証してみることにする。

ちなみに下記の画像は、llama3:8b...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18766/49d65ba4-f9f6-e625-1e02-e2aec9bc467c.png)