visual chatGPT をコマンドラインから使う（使えない

# お絵かきバリ君の制限解除版（表現

AIに絵を書いてほしいけど有料版にするのもちょっとなというみなさん。
気がつけばMSからchatGPTを利用してテキストから画像を作成するのが
OSSで配布されてました。さすが太っ腹。chatGPTに巨額のアレしてるだけある。

[visual-chatgpt](https://github.com/microsoft/visual-chatgpt)
https://github.com/microsoft/visual-chatgpt

さて私の一世代前のMacで動くのかしら。レッツトライ＆エラー（嫌

## インストール方法

作業前にローカルにopenAIと接続する環境準備が必要です

私は以前の続きで実行中；
[コマンドラインから略・・](https://qiita.com/taro-yamada/items/790d33730c1e74d32b34) こちらの継続。

0, 環境変数に OPENAI_API_KEY を設定する

```python
(taro) taro@MacBook-Air ~ % export OPENAI_API_KEY=★秘密のあれ★
```

1, Githubからモジュールをダウンロード

2, pip で必要なモジュールをインストール

```python
(taro) taro@MacBook-Air ~ % pip install -r requirements.txt
```
何故エラーが出る
```python
Collecting basicsr
  Using cached basicsr-1.4.2.tar.gz (172 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [23 lines of output]
      No local packages or working download links found for torch
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/yh/7xxm4yx57q396_gc1fv72cx40000gn/T/pip-install-4d2xp1ca/basicsr_b46cba00e722424b88fdb643ef227e17/setup.py", line 147, in <module>
```
これはどうやら既知の事象みたい。
recuirements.txt から basicsr を削除。削除するだけです。

```diff_python
(taro) taro@MacBook-Air ~ % diff requirements.txt requirements.txt.org 
7a8
> basicsr
(taro) taro@MacBook-Air ~ % 
```

そのあと `pip install -r requirements.txt` を実行すれば他のは大丈夫。

basicsr-1.4.2.tar.gz は自分でインストール。

https://pypi.org/project/basicsr/
＞ basicsr-1.4.2.tar.gz
これだ。追加でインストールしちゃうだけ。

```python
(taro) taro@MacBook-Air ~ % pip install basicsr

Installing collected packages: lmdb, google-auth-oauthlib, tb-nightly, basicsr
  Attempting uninstall: google-auth-oauthlib
    Found existing installation: google-auth-oauthlib 0.4.6
    Uninstalling google-auth-oauthlib-0.4.6:
      Successfully uninstalled google-auth-oauthlib-0.4.6
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tensorboard 2.12.0 requires google-auth-oauthlib<0.5,>=0.4.1, but you have google-auth-oauthlib 1.0.0 which is incompatible.
```

うむむ。なんかエラー出ているけどバージョンがあってないのかしら。
ひとまず手元が最新ぽいので気にしない。そのうち誰か修正するはず。

3, 実行

```python
(taro) taro@MacBook-Air ~ % python visual_chatgpt.py --load ImageCaptioning_cpu,Text2Image_cpu
Initializing VisualChatGPT, load_dict={'ImageCaptioning': 'cpu', 'Text2Image': 'cpu'}
Initializing ImageCaptioning to cpu
Downloading (…)rocessor_config.json: 100%|███████████████████████████| 287/287 [00:00<00:00, 9.61kB/s]
Downloading (…)okenizer_config.json: 100%|███████████████████████████| 438/438 [00:00<00:00, 34.1kB/s]
Downloading (…)solve/main/vocab.txt: 100%|██████████████████████████| 232k/232k [00:00<00:00, 429kB/s]
Downloading (…)cial_tokens_map.json: 100%|███████████████████████████| 125/125 [00:00<00:00, 19.3kB/s]
Downloading (…)lve/main/config.json: 100%|████████████████████████| 4.56k/4.56k [00:00<00:00, 648kB/s]
Downloading pytorch_model.bin:  53%|████████████████▍              | 524M/990M [02:06<01:30, 5.17MB/s]
```
なんか動いている感じがあって楽し。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/27f0642a-ae8e-1075-af26-03a31d6e43bb.png)

5GB？なんと。
なんか容量が足りるか怪しい。ひとまず時間がかかりそうなので続きは明日・・。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/f5553ac2-34b2-5d47-e531-c97bec522201.png)

なんだこれエラーで落ちた、笑
ポート番号は netstat でみても1015は利用していないので
ホスト名とポート番号を変更。

```diff_python
(taro) taro@MacBook-Air ~ % diff visual_chatgpt.py visual_chatgpt.py.org 1069c1069
<         demo.launch(server_name="127.0.0.1", server_port=8080)
---
>         demo.launch(server_name="0.0.0.0", server_port=1015)
```

```python
(taro) taro@MacBook-Air ~ % python visual_chatgpt.py --load ImageCaptioning_cpu,Text2Image_cpu
Initializing VisualChatGPT, load_dict={'ImageCaptioning': 'cpu', 'Text2Image': 'cpu'}
Initializing ImageCaptioning to cpu
Initializing Text2Image to cpu
Fetching 15 files: 100%|██████████████████████████████████████████████| 15/15 [00:00<00:00, 21069.85it/s]
  warnings.warn(Running on local URL:  http://127.0.0.1:8080

To create a public link, set `share=True` in `launch()`.
```

ありがとうございます。動きました！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/8272aa17-ae36-4847-c2b4-f13fa302f94e.png)

でも画像描画、CPUが非力なので無理っぽい、笑
50分は待てないや

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/d87f233b-799b-c085-249e-b7a9a3fb0ef9.png)

セットアップの時間とは（悲しさ。

## サンリオってつぶやいた結果

非力な Mac はやめてPCにセットアップ継続。
サンリオをつぶやいたらエラーが出た罠

```python
> Entering new AgentExecutor chain...

Yes
Action: Get Photo Description
Action Input: image/sanrio_character.pngTraceback (most recent call last):
  File "c:\apl\Python38\lib\site-packages\gradio\routes.py", line 384, in run_predict
    output = await app.get_blocks().process_api(
  File "c:\apl\Python38\lib\site-packages\gradio\blocks.py", line 1032, in process_api
    result = await self.call_function(
  File "c:\apl\Python38\lib\site-packages\gradio\blocks.py", line 844, in call_function
    prediction = await anyio.to_thread.run_sync(
  File "c:\apl\Python38\lib\site-packages\anyio\to_thread.py", line 31, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
  File "c:\apl\Python38\lib\site-packages\anyio\_backends\_asyncio.py", line 937, in run_sync_in_worker_thread
    return await future
  File "c:\apl\Python38\lib\site-packages\anyio\_backends\_asyncio.py", line 867, in run
    result = context.run(func, *args)
  File "visual_chatgpt.py", line 1014, in run_text
    res = self.agent({"input": text})
  File "c:\apl\Python38\lib\site-packages\langchain\chains\base.py", line 168, in __call__
    raise e
  File "c:\apl\Python38\lib\site-packages\langchain\chains\base.py", line 165, in __call__
    outputs = self._call(inputs)
  File "c:\apl\Python38\lib\site-packages\langchain\agents\agent.py", line 503, in _call
    next_step_output = self._take_next_step(
  File "c:\apl\Python38\lib\site-packages\langchain\agents\agent.py", line 420, in _take_next_step
    observation = tool.run(
  File "c:\apl\Python38\lib\site-packages\langchain\tools\base.py", line 71, in run
    raise e
  File "c:\apl\Python38\lib\site-packages\langchain\tools\base.py", line 68, in run
    observation = self._run(tool_input)
  File "c:\apl\Python38\lib\site-packages\langchain\agents\tools.py", line 17, in _run
    return self.func(tool_input)
  File "visual_chatgpt.py", line 319, in inference
    inputs = self.processor(Image.open(image_path), return_tensors="pt").to(self.device, self.torch_dtype)
  File "c:\apl\Python38\lib\site-packages\PIL\Image.py", line 3092, in open
    fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'image/sanrio_character.png'
```

ローカルに sanrio 画像がないって。当然な気がする。およよ。
もう少し調査・・・。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/c1f94f1d-f302-a385-cfe0-7fb8341547fb.png)

もう一回実行しなおしたら 60分で何かできそう（遅い。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/07d414fc-0d09-b1e0-9bf2-8b1b47659aca.png)

おおお。ついに何かができたのかも、笑

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/3ad3a222-5b51-433b-41f5-b4b3e49432bc.png)

ブラウザには何もでていませんけど・・。時間浪費とは。

```python
> Entering new AgentExecutor chain...
 Yes
Action: Generate Image From User Input Text
100%|███████████████████████████████████████████| 50/50 [23:28<00:00, 28.18s/it]

Processed Text2Image, Input Text: ハンギョドン, Output Image: image/b6dcdf84.png

Observation: image/b6dcdf84.png
Thought: Do I need to use a tool? No
AI: こちらがハンギョドンの画像です。ファイル名はimage/b6dcdf84.pngです。

> Finished chain.

Processed run_text, Input text: ハンギョドン
Current state: [('サンリオのキャラクターをお願いいたします', 'こちらがサンリオのキャラクターの画像です。ファイル名は<img src="/file=image/e8af3d39.png" alt=""><em>image/e8af3d39.png</em>です。'), ('ハンギョドン', 'こちらがハンギョドンの画像です。ファイル名は![](/file=image/b6dcdf84.png)*image/b6dcdf84.png*です。')]
Current Memory: 
Human: サンリオのキャラクターをお願いいたします
AI: こちらがサンリオのキャラクターの画像です。ファイル名はimage/e8af3d39.pngです。
Human: ハンギョドン
AI: こちらがハンギョドンの画像です。ファイル名はimage/b6dcdf84.pngです。
```
成功したかも。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/6a079a93-fa42-36fc-fa05-3cc09d46ef07.png)

直接ローカルにできたファイルを開いたら「ハンギョドン」・・。
どこが！！！