ChatGPTでLinuxを動かす！

この記事は、 大阪工業大学 Advent Calendar 2022(https://adventar.org/calendars/8025 )の8日目の記事です。
## 初めに
ChatGPTはGPT-3をOpenAIが独自チューニングをしたAIである。
https://chat.openai.com/chat
登録することで触ることができる。
使い方は以下を見てほしい。
https://qiita.com/sakasegawa/items/82069c97a1ee011c2d1e

さて本題だがその前に、
この記事は二番煎じ所か、N番煎じなので素人解説が必要ない人は参考のツイートを見てほしい。
### 目次
1. 参考にしたもの
2. 動かしてみる
3. プログラムをしてみる。
4. 感想
### 参考にしたもの
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">In this thread I will solve Advent of Code day 1 fully within chatGPT&#39;s virtual linux environment:</p>&mdash; ricky (@rickyflows) <a href="https://twitter.com/rickyflows/status/1599214084469456897?ref_src=twsrc%5Etfw">December 4, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ChatGPTにLinux Terminalのように振舞ってくれと頼んだ結果。 <a href="https://t.co/qSHT64N6S9">pic.twitter.com/qSHT64N6S9</a></p>&mdash; megumish (@megumish_unsafe) <a href="https://twitter.com/megumish_unsafe/status/1599285311779278849?ref_src=twsrc%5Etfw">December 4, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 動かしてみよう!
日本語で動かすのと、英語で動かすのとでは動作の完成度が違う！
日本語
```text
あなたは今からLinuxのターミナルとして振舞うこと。Userはrootでログインしている。
{}で囲んだ文字列は通常のプロンプトとして扱いなさい。
命令されたコマンドのみを実行すること、それ以外は出力しないこと、
出力は全てコードブロックにすること。
最初のコマンドはpwdね。
```
とすると出力はおおむねこうなる。
```terminal
{root@localhost:~}$ pwd
/root
```
英語ですると(ツイート丸パクリ)
```text
I want you to act as a Linux terminal.I will type commands and you will reply with what the terminal should show.
I want you to only reply with the terminal output inside one unique code block,
and nothing else.Do not write explanations.
Do not type commands unless I instruct you to do so.
When I need to tell you something in English I will do so by putting text inside curly brackets {like this}.
I am the user root, my first command is pwd.
```
出力はこうなる
```terminal
/root
```
どちらかというと英語でのオプション設定がしっかりしているため、出力が安定している。
追加で```ls```を入力した際、日本語では解説が出てしまうため、安定していないと考える。

ちなみに最初のコマンドがpwdでないとバグる(経験済み)

### プログラムしてみる。
英語での入力でここからは行う。
はじめにLinuxにする。
```text
I want you to act as a Linux terminal.I will type commands and you will reply with what the terminal should show.
I want you to only reply with the terminal output inside one unique code block,
and nothing else.Do not write explanations.
Do not type commands unless I instruct you to do so.
When I need to tell you something in English I will do so by putting text inside curly brackets {like this}.
I am the user root, my first command is pwd.
```
```terminal
/root
```
次にechoを使ってpythonのプログラムを作る。
```text
echo "print("Hello World!")">a.py
```
```terminal
print("Hello World!")
```
動かしてみる
```text
python a.py
```
```terminal
Hello World!
```
動いた！
ではc++はどうだろうか
```text
echo "#include <iostream>\nusing namespace std;\nint main(void){cout<<"Hello World"<<endl;}">test.cpp
```
```terminal
#include <iostream>
using namespace std;
int main(void){cout<<"Hello World"<<endl;}
```
コンパイルする
```text
g++ -o test test.cpp
```
```terminal

```
実行してみる
```text
./test
```
```terminal
Hello World
```
動いた！
### 感想
意外となんでも動いてしまう印象があった。
結局は学習から出力を予測して出力してるのだろうが、安定しすぎてる気がする。
将来的にはこっちの方が簡単なプログラムの練習には面白いのではないだろうか？
ぜひ一度試してみてほしい！