毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
以前、書いた「GPTScriptで遊ぶ」の第2弾です。
今回は、GPTScriptを使って英語のファイルを翻訳してみたいと思います。
1. GPTScriptについて
GPTScriptとは?
以下のGitHubをご確認いただければと思います。
gptscript-ai/gptscript: Natural Language Programming
2. GPTScriptを使うメリット
一般的なChatGPTを使った操作でファイルを翻訳する方法は、以下のようになります。
- ChatGPT等の生成AIのチャットウィンドウを開く
- 翻訳したいファイルを開いて、ファイルの中身をクリップボードにコピーする
- 開いているチャットウィンドウにテキストを翻訳するようなプロンプトを入力する
- プロンプトの下にクリップボードのコピーされているテキストを貼り付ける
- プロンプトを実行
- 出力された結果を選択して、クリップボードへコピーする
- クリップボードへコピーされた翻訳結果をファイルへ貼り付けて保存する
という段階を経る必要があります。
なんだか、大変ですよね。
GPTScriptを使うと、GPTScriptを実行したマシン上のファイルを読み込ませることができます。そして、出力結果をファイルに書き出すことができます。さらにプロンプトをファイルとして保存しておくことができるので、ファイルを翻訳するには以下のような操作で実行できます。
- GPTScriptを実行するファイルを作成して、そのファイルにファイルを翻訳するプロンプトを書き込む。
- プロンプトには、どのファイルを翻訳するか、翻訳した結果をどこに保存するか書いておく。
- GPTScriptを実行する
これだけで、翻訳ファイルができあがります。
3. 実際にやってみる
使っているGPTScriptのバージョンは以下の通りです。
$ gptscript -v
gptscript version v0.5.0+5a8a685c
gptscriptに読み込ませるスクリプトは以下の通りです。
ファイル名の拡張子は、.gpt
にしてください。
tools: sys.read, sys.write
README.mdファイルを読み込んで日本語に翻訳した内容をtranslated-README.ja.mdというファイル名で保存してください。
ファイルを翻訳するときに、```や```yamlで囲まれたMarkdownの書式のブロッククオートの中の部分は翻訳しないでください。
ファイルを書き出すときに日本語はUTF-8でエンコードしてください。
この.gptファイルがある場所に、README.mdファイルを置いて、以下のコマンドを実行します。
gptscript ./translate-README.md-to-japanese.gpt -o output.txt
4. 日本語への変換結果
変換されたGPTScriptのREADME.mdファイルです。
GPTScript
概要
GPTScriptは、OpenAIという大規模言語モデル(LLM)とのやり取りを自動化するための新しいスクリプト言語です。最終的な目標は、自然言語プログラミング体験を創出することです。GPTScriptの構文は大部分が自然言語であり、学習しやすく使いやすいです。
自然言語のプロンプトは、bashやpythonのような従来のスクリプトや外部HTTPサービスの呼び出しと混在させることができます。GPTScriptを使えば、休暇の計画、ファイルの編集、SQLの実行、mongodb/flaskアプリの構築など、ほぼ何でも行うことができます。以下はGPTScriptの一般的な使用例です:
![]() |
現在、GPTScriptを使ってローカルモデルとのやり取りを行うオプションを探索中です。 |
---|
以下の例は、英語での指示を書くことで複雑なタスクを達成できる方法を示しています:
# example.gpt
Tools: sys.download, sys.exec, sys.remove
Download https://www.sqlitetutorial.net/wp-content/uploads/2018/03/chinook.zip to a
random file. Then expand the archive to a temporary location as there is a sqlite
database in it.
First inspect the schema of the database to understand the table structure.
Form and run a SQL query to find the artist with the most number of albums and output
the result of that.
When done remove the database file and the downloaded content.
$ gptscript ./example.gpt
OUTPUT:
The artist with the most number of albums in the database is Iron Maiden, with a total
of 21 albums.
クイックスタート
1. 最新リリースをインストール
Homebrew (macOSとLinux)
brew install gptscript-ai/tap/gptscript
インストールスクリプト (macOSとLinux):
curl https://get.gptscript.ai/install.sh | sh
Scoop (Windows)
scoop bucket add extras # If 'extras' is not already enabled
scoop install gptscript
WinGet (Windows)
winget install gptscript-ai.gptscript
手動で
リリースページからプラットフォームとアーキテクチャに合ったアーカイブをダウンロードしてインストールします。
2. OpenAIからAPIキーを取得します。
macOSとLinux
export OPENAI_API_KEY="your-api-key"
代わりにAzure OpenAIを利用することもできます。Azureデプロイメント名が使用しているモデルと異なる場合は、OPENAI_AZURE_DEPLOYMENT
引数を含めることを忘れないでください。
export OPENAI_API_KEY="your-api-key"
export OPENAI_BASE_URL="https://<your-endpoint>.openai.azure.com/"
export OPENAI_API_TYPE="AZURE"
export OPENAI_AZURE_DEPLOYMENT="<your-deployment-name>"
Windows
$env:OPENAI_API_KEY = 'your-api-key'
3. Hello Worldを実行
gptscript https://get.gptscript.ai/echo.gpt --input 'Hello, World!'
OUTPUT:
Hello, World!
デフォルトで使用されるモデルはgpt-4-turbo-preview
であり、OpenAIアカウントでそのモデルへのアクセス権を持っている必要があります。
Azure OpenAIを使用する場合は、--default-model
引数でサポートされているバージョンのモデルを設定することを確認してください。
4. 追加クレジット: 例とデバッグUIの実行
例をクローンしてデバッグUIを実行します
git clone https://github.com/gptscript-ai/gptscript
cd gptscript/examples
# Run the debugging UI
gptscript --server
仕組み
GPTScriptはツールで構成されています。 各ツールは、関数のような一連のアクションを実行します。ツールは、関数呼び出しのように他のツールを呼び出すことができます。関数に似ていますが、ツールは主に自然言語のプロンプトで実装されます。ツールの相互作用はAIモデルによって決定されます、モデルはツールを呼び出す必要があるかどうか、何を引数として渡すかを決定します。ツールは自然言語のプロンプトで実装されることが意図されていますが、コマンドやHTTP呼び出しで実装することもできます。
例
以下は、---
で区切られた2つのツール定義です。最初のツールは名前や説明を必要としませんが、その後のすべてのツールでは名前と説明が必要です。最初のツールにはtools: bob
というパラメータがあり、必要に応じてbob
という名前のツールを呼び出すことができます。
tools: bob
Ask Bob how he is doing and let me know exactly what he said.
---
name: bob
description: I'm Bob, a friendly guy.
args: question: The question to ask Bob.
When asked how I am doing, respond with "Thanks for asking \"${question}\", I'm doing great fellow friendly AI tool!"
上記の内容をbob.gpt
というファイル名で保存し、次のコマンドを実行します:
$ gptscript bob.gpt
OUTPUT:
Bob said, "Thanks for asking 'How are you doing?', I'm doing great fellow friendly AI tool!"
ツールは、自然言語のプロンプトではなくプログラムを呼び出すことによって実装することができます。以下の例は、前の例と同じですが、Bobをpythonを使って実装しています。
Tools: bob
Ask Bob how he is doing and let me know exactly what he said.
---
Name: bob
Description: I'm Bob, a friendly guy.
Args: question: The question to ask Bob.
#!python3
import os
print(f"Thanks for asking {os.environ['question']}, I'm doing great fellow friendly AI tool!")
これらの基本的な構成要素を使って、AIがAI、ローカルシステム、データ、または外部サービスと対話する複雑なスクリプトを作成できます。
GPTファイルリファレンス
拡張子
GPTScriptファイルは、慣例により.gpt
拡張子を使用します。
ファイル構造
GPTScriptファイルには、1つ以上のツールがファイル内にあります。各ツールは、行単位で3つのダッシュ---
によって区切られます。
Name: tool1
Description: This is tool1
Do sample tool stuff.
---
Name: tool2
Description: This is tool2
Do more sample tool stuff.
ツール定義
ツールは、ツールの名前、説明、引数、利用可能なツール、および追加のパラメータを定義する前文で始まります。前文に続いて、ツールの本体があり、ツールの指示が含まれます。前文のコメントは#
で始まる行であり、パーサーによって無視されます。コメントは通常、説明、引数の説明、または指示の中でテキストがより有用であるため、推奨されません。
Name: tool-name
# This is a comment in the preamble.
Description: Tool description
# This tool can invoke tool1 or tool2 if needed
Tools: tool1, tool2
Args: arg1: The description of arg1
Tool instructions go here.
ツールパラメータ
ツールパラメータは、指示のテキストの前に定義されるキーと値のペアです。key: value
の形式で指定されます。パーサーは、次のキーを認識します(大文字小文字は区別されず、スペースは無視されます):
キー | 説明 |
---|---|
Name |
ツールの名前。 |
Model Name |
使用するOpenAIモデル。デフォルトでは"gpt-4-turbo-preview"を使用します。 |
Description |
ツールの説明。これは、ツールの目的を適切に説明することが重要です。LLMによって使用されます。 |
Internal Prompt |
これをfalse に設定すると、このツールの組み込みシステムプロンプトが無効になります。 |
Tools |
このツールによって呼び出されるツールのコンマ区切りリスト。 |
Args |
ツールの引数。各引数はarg-name: description の形式で定義されます。 |
Max Tokens |
LLMによって生成されるトークンの最大数を制限したい場合は、数値を設定します。 |
JSON Response |
これをtrue に設定すると、LLMがJSON形式で応答します。trueに設定する場合は、ツールに指示を含める必要があります。 |
Temperature |
創造性を高めるためにより高い数値に設定された浮動小数点数を表す温度パラメータ。デフォルトでは温度は0です。 |
ツール本体
ツール本体には、ツールの指示が含まれています。これは自然言語のプロンプトまたは実行するコマンドである可能性があります。コマンドは#!
で始まり、インタープリタ(例:#!/bin/bash
, #!python3
)に続きます。引数は指示の中で${arg1}
の形式で参照できます。
name: echo-ai
description: 入力をエコーするツール
args: input: 入力
Just return only "${input}"
---
name: echo-command
description: 入力をエコーするツール
args: input: 入力
#!/bin/bash
echo "${input}"
組み込みツール
基本的なことを行うためのいくつかの組み込みツールがあります。ファイルの読み書き、HTTPコンテンツのダウンロード、コマンドの実行などができます。
gptscript --list-tools
を実行して、すべての組み込みツールをリストアップします。
例
より多くの例については、examplesディレクトリをチェックしてください。
コミュニティ
Discordで参加しましょう:
ライセンス
Copyright (c) 2024 Acorn Labs, Inc.
Apache License, Version 2.0("License")の下でライセンスされています;
このファイルをLicenseに従って以外で使用することはできません。
Licenseは以下から入手できます
http://www.apache.org/licenses/LICENSE-2.0
適用される法律または書面による合意が必要な場合を除き、ライセンスの下で配布されるソフトウェアは、いかなる種類の保証も条件もなしに"AS IS"ベースで配布されます。
ライセンスの下での権利と制限に関する規定を参照してください。
5. まとめ
GPTScriptを使ってプロンプトのチャットウィンドウからおさらばしましょう