Auto-GPTは、自然言語で表現されたユーザー定義の目標を達成するために、OpenAIのGPT-4またはGPT-3.5 APIを活用するオープンソースAIツールです。これは、主要なタスクをより小さなコンポーネントに分析し、周期的なプロセスでさまざまなリソースを自律的に利用することで行います。
このガイドでは、AutoGptのさまざまな機能を調査し、コーディングにAutoGptを利用するためのベストプラクティスとヒントの概要を説明します。
git clone https://github.com/significant-gravitas/auto-gpt.gitを使用して、リポジトリページの[コード]ボタンをクリックしてzipファイルをダウンロードすることにより、リポジトリをクローンできます。autogpt --versionを実行することにより、インストールが成功したことを確認します。端末にバージョン番号が表示されていることがわかります。また、仮想環境を使用してAutoGptのインストールを封じ込めたり、依存関係をインストールしたりAutoGptを実行しているときにエラーが発生しないようにすることもできます。
独自の構成と独自のAPIキーを使用して「.env」を更新してください。ファイルには、必要なすべてのAPIが含まれています。画像生成のようにそれらを使用しない場合は、次のことを確認できます。
Openai APIキー- このキーは、AutoGptが上に構築されているOpenai APIを使用するために必要です。 Openai APIプログラムにサインアップすることで、APIキーを取得できます。
github_api_key-このキーは、github APIへのアクセスを承認するために必要です。 GitHub Webサイトの手順に従うことで、このキーを取得できます。
github_username
ここにすべてのAPIを追加できます。 「.env」は自明です。これらのキーを取得したら、リポジトリの.envファイルを編集し、上記のAPIキーを追加する必要があります。
また、以下に注意してください。
リポジトリで.envファイルを編集し、上記のAPIキーを追加する必要があります。これは、APIキーがアプリケーションにハードコードされるべきではない機密情報であるためです。
また、AutoGptを特定のユースケースに対してより便利にするために、 prompts.jsonファイルに独自のプロンプトを追加する必要があります。リポジトリで提供されるプロンプトは、プロジェクトに適用できない一般的なプロンプトです。独自のプロンプトを追加することにより、AutoGptをトレーニングして、特定のユースケースに合わせた応答を生成できます。
AutoGptをプロンプトするには、端末でコマンドpython -m autogptを使用します。あなたが正しい道にいることを確認してください。そうでない場合は、「CDパス」で設定します
最良の結果を得るには、プロンプトが具体的で明確に定義されていることを確認してください。これにより、AutoGptはあなたが達成しようとしていることを明確に理解し、より正確な応答を生み出すのに役立ちます。
モデルの応答を確認するときは、AutoGptは人間ではなく言語モデルであることに留意してください。そのため、ユースケースに完全に正確または適切ではない応答を生成する場合があります。応答を確認し、必要な変更を加えるのはあなた次第です。
AutoGptを使用する別の方法は、コードに統合することです。クローン化されたフォルダーでコマンドを見て、それを使用してプログラムで応答を生成できます。これは、特定のコンテキストで応答を生成する場合に役立ちます。
迅速なエンジニアリングにAutoGptを使用する最良の方法を以下に示します。
@commandデコレーターは、カスタムコマンドを定義するために使用されます。 3つの議論が必要です。
name :コマンドの名前。description :コマンドの簡単な説明。params :コマンドの期待されるパラメーターを表す文字列。 @commandデコレーターを使用して、 execute_python_fileというカスタムコマンドを定義する例を次に示します。
@ command ( "execute_python_file" , "Execute Python File" , '"filename": "<filename>"' )
def execute_python_file ( filename : str ) -> str :
# Implementation of the commandシェルコマンドを実行するには、 subprocessモジュールを使用できます。シェルコマンドを実行する2つの方法を次に示します。
subprocess.run()の使用:このメソッドはコマンドを実行し、完了するのを待ちます。コマンドの出力(stdoutおよびstderr)を返します。
result = subprocess . run ( command_line , capture_output = True , shell = True )
output = f"STDOUT: n { result . stdout } n STDERR: n { result . stderr } " subprocess.Popen()の使用:このメソッドは、個別のプロセスとしてコマンドを起動し、すぐに返します。非ブロッキングコマンドを実行するのに役立ちます。
process = subprocess . Popen (
command_line , shell = True , stdout = subprocess . DEVNULL , stderr = subprocess . DEVNULL
)
return f"Subprocess started with PID:' { str ( process . pid ) } '"シェルコマンドを実行するカスタムコマンドを作成するには、 @commandデコレーターとsubprocessメソッドを使用できます。
@ command ( "execute_shell" , "Execute Shell Command" , '"command_line": "<command_line>"' )
def execute_shell ( command_line : str ) -> str :
result = subprocess . run ( command_line , capture_output = True , shell = True )
output = f"STDOUT: n { result . stdout } n STDERR: n { result . stderr } "
return output analyze_codeモジュールは、特定のコードスニペットを分析し、改善の提案を提供するように設計されています。 @commandデコレーターを使用して、 analyze_codeというカスタムコマンドを定義します。この関数は、分析するコードを含む文字列を使用し、提案のリストを返します。
これがコードの簡略化された説明です:
@commandデコレーターでanalyze_code関数を定義します。 @ command ( "analyze_code" , "Analyze Code" , '"code": "<full_code_string>"' )
def analyze_code ( code : str ) -> list [ str ]: function_string = "def analyze_code(code: str) -> list[str]:"
args = [ code ]
description_string = (
"Analyzes the given code and returns a list of suggestions for improvements."
) return call_ai_function ( function_string , args , description_string ) improve_code関数は、提供された提案のリストに基づいて、特定のコードスニペットを改善するように設計されています。 @commandデコレーターを使用して、 improve_codeというカスタムコマンドを定義します。この関数は、改善するコードを含む提案のリストと文字列を採用し、提案された改善が適用された新しいコード文字列を返します。
これがコードの簡略化された説明です:
@commandデコレーターでimprove_code関数を定義します。 @ command ( "improve_code" , "Get Improved Code" , '"suggestions": "<list_of_suggestions>", "code": "<full_code_string>"' )
def improve_code ( suggestions : list [ str ], code : str ) -> str : function_string = "def generate_improved_code(suggestions: list[str], code: str) -> str:"
args = [ json . dumps ( suggestions ), code ]
description_string = (
"Improves the provided code based on the suggestions"
" provided, making no other changes."
) return call_ai_function ( function_string , args , description_string ) improve_code関数を使用するには、改善するコードスニペットを含む提案のリストと文字列を渡します。
suggestions = [
"Replace the print statement with a return statement." ,
"Add type hints to the function."
]
code_to_improve = '''
def some_function():
print("Hello, World!")
'''
improved_code = improve_code ( suggestions , code_to_improve )
print ( improved_code ) improve_code関数はAI関数を呼び出します。AI関数は、OpenAI APIを使用して、推奨される改善をコードに適用し、コードの新しい改良バージョンを生成します。改善の品質は、言語モデルの提案に対する理解とそれらを正しく適用する能力に依存することに注意してください。
prompt = "Generate documentation for the function 'Function name'"
generator = response = openai.Completion.create(
engine=engine,
prompt=prompt,
max_tokens=150,
n=1,
stop=None,
temperature=1.2,
presence_penalty=0.5,
frequency_penalty=0.5,
)
Debuggingにimprove_code関数を使用すると、以下の手順に従うことができます。
コードの問題またはバグを特定します。これを手動で行うことができます。または、リンター、静的アナライザー、デバッガーなどのツールを使用して、問題を特定することができます。
特定された問題に基づいて提案のリストを作成します。各提案は、コードの特定の問題またはバグを修正する方法を説明する必要があります。
improve_code関数を呼び出し、提案のリストとコードスニペットを引数として問題と渡します。
suggestions = [
"Fix the IndexError by using a conditional statement." ,
"Handle the ZeroDivisionError exception."
]
buggy_code = '''
def buggy_function(a, b):
result = a / b
return result
def another_buggy_function(lst):
return lst[0]
'''
improved_code = improve_code ( suggestions , buggy_code )
print ( improved_code )improve_code関数によって返された改良コードを確認します。 AIに生成された改善が提案と一致していることを確認し、特定された問題を正しく修正してください。改善されたコードが期待どおりに機能することを確認します。 - Choose the search function: `google_search` for DuckDuckGo or `google_official_search` for the official Google API.
- Call the chosen function with your search query:
```python
query = "example search query"
num_results = 5
# Perform the search using DuckDuckGo
search_results = google_search(query, num_results)
print(search_results)
# Or, perform the search using the official Google API
# search_results = google_official_search(query, num_results)
# print(search_results)
この関数は、指定されたクエリに一致する検索結果URLのリストを返します。 Google APIがSecrets.jsonに保存されていることを確認してください
あなたが削りたいWebサイトのURLと、あなたが探しているコンテンツに関連する質問を使用して、 browse_website関数を呼び出してください。
url = "https://example.com"
question = "What is the main purpose of the website?"
answer_and_links = browse_website ( url , question )
print ( answer_and_links ) browse_website関数は、 scrape_text_with_seleniumを使用して、Webサイトのテキストコンテンツとscrape_links_with_seleniumテキストコンテンツを削り、リンクを抽出します。
list_files関数を呼び出します。 directory = "path/to/directory"
all_files = list_files ( directory ) search_criteria = "example"
matching_files = [ file for file in all_files if search_criteria in file ]
print ( matching_files )この例では、 matching_filesには、 search_criteria文字列が名前にある指定されたディレクトリ(およびそのサブディレクトリ)内のすべてのファイルのリストが含まれています。特定の検索要件に合わせて、必要に応じてフィルタリング条件を変更します。
AutoGptには、特定のURLからマシンのローカルディレクトリにGitリポジトリをクローンできる関数clone_repositoryがあります。入力を求めるように求めて、 clone_repository関数を使用してgitリポジトリをクローンするには、次の手順に従ってください。
repo_url = "repository URL"
clone_path = "the path to clone the repository"clone_repository関数を呼び出します。 result = clone_repository ( repo_url , clone_path )このコードは、 Configオブジェクトから提供されたgithub認証資格情報を使用してリポジトリをクローン化するclone_repository関数を呼び出します。
AutoGptを使用して、コードの説明的なコメントを自動的に生成します。これは、特にコードベースに精通していないチームメンバーにとって、コードをより読みやすく理解しやすくするのに役立ちます。
AutoGptを使用して、プロジェクトのボイラープレートコードを生成します。たとえば、AutoGptを使用して、ログを設定するためにコードを生成したり、構成ファイルを作成したり、データベースの初期化したりできます。
AutoGptを使用して、コードのテストケースを生成します。これは、コードが予想どおりに機能していること、およびコードに行った変更が新しいバグを導入しないことを確認するのに役立ちます。
AutoGptを使用して、プロジェクトのドキュメントを生成します。 AutoGptは、APIドキュメント、ユーザーガイド、およびその他の種類のドキュメントを自動的に生成し、時間と労力を節約できます。
AutoGptは、コーディングとプロンプトエンジニアリングに役立つ強力なツールです。コードスニペットを生成し、コード構文を確認し、コードを改善し、テストケースを生成し、ドキュメントを生成し、Pythonファイルを実行できます。 AutoGptを使用することにより、時間を節約し、生産性を高めることができます。