【babyagi-2o】自分でエラー修正できるAIエージェント!GPT-4oと比較してみた

babyagi-2o AIエージェント GPT-4o 比較

2024年10月18日に自律型エージェントが新たにリリースされました!

babyagi-2oはユーザーが指示したタスクに対してプログラムを作成して、その結果を返してくれます。しかもなんと、エラーが起きても・ライブラリが不足しても、エージェントが自己にて修正してくれるというツール。

たった数行のプロンプトで、100行越えの複雑なタスクも完遂します!

本記事では、babyagi-2oについて紹介し、実際のコーディング例も解説します。

ぜひ最後までお読みください!

目次

babyagi-2oの概要

babyagi-2oは非常にシンプルな自己構築型の自律型エージェントを作成するツールです。

自律型エージェントの主な目的は、ユーザーが与えたタスクを完了するために、必要に応じてツールを自動的に生成し、更新すること。babyagi-2との違いは、babyagi-2がデータベースに関数を保存し実行するのに対し、babyagi-2oはツールをその場で作成して使用する点です。

参考:https://replit.com/~

babyagi-2oの特徴

babyagi-2oは、与えられたタスクを自動的に解決するための自律型エージェントであり、その特徴は非常に独特。

まず、babyagi-2oはユーザーが定義するタスクを遂行するために、自ら必要なツールを生成。これにより、複雑なタスクにも柔軟に対応でき、ツールの作成や更新をエージェントがすべて自動で行うため、ユーザーは何か操作をする必要はありません。

さらに、ツールを生成する際に必要なパッケージは、エージェントが自動的にインストールしてくれます。そのため、開発環境を整える手間も省かれ、タスク解決のプロセスが非常にスムーズです。また、タスク処理中にエラーが発生しても、エージェントは学習を続け、エラーを繰り返すことなくタスク完了に向けて処理を進行。

また、babyagi-2oはOpenAIのGPT-4やAnthropicのClaudeなど、複数の大規模言語モデルを利用してツールの呼び出しや関数の実行を行うことも可能。この柔軟性によって、さまざまなタスクや環境に適応できるようになっています。

babyagi-2oのライセンス

babyagi-2oは MITライセンスです。そのため、基本的には商用利用や改変、配布など全て可能です。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用⭕️
私的使用⭕️
参考:https://github.com/yoheinakajima/babyagi-2o/blob/main/LICENSE

なお、自律型エージェントBabyAGIについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

WEEL
BabyAGIとは?日本語ので使い方やAutoGPT・ChatGPTとの違い、利用事例を解説 | WEEL 複雑な作業ができるAIを使って日々の作業を効率化したいとお考えの方も多いでしょう。BabyAGIはユーザーの目標を達成するために必要なタスクを自動生成して実行するプログ...

babyagi-2oの使い方

ここからはgoogle colaboratoryを使ってbabyagi-2oを実装します

またbabyagi-2oを実行するにはOpenAIやAnthropicなどの大規模言語モデルを使用するためにAPIキーが必要です。

OpenAIのAPIキー取得

まずはOpenAIのページにアクセスします。

APIキーを取得するためには、OpenAIのアカウントが必要なので右上からログインもしくはアカウントを作成しましょう。

ChatGPTのアカウントを持っていれば同じアカウントでログインできます。

参考:https://platform.openai.com/docs/overview

ログインもしくはアカウント作成後に、「dashboard」と右上に表示されますので、そちらをクリックします。

参考:https://platform.openai.com/docs/overview

dashboardに移動後、画面向かって左側に「API Keys」という表示があるので、そちらをクリック

参考:https://platform.openai.com/chat-completions

APIキーを作成するためには、電話認証が必要なので、電話番号を登録します。

電話番号の認証が終了したら「+ Create new secret key」をクリックするとAPIキーを作成できます。

参考:https://platform.openai.com/api-keys

以前は無料クレジットが貰えていましたが、現在はもらえなくなっていました。また、従量課金制から前払い制に変更されており、使用する前にクレジットを購入する必要があります。」

画面向かって右上の歯車アイコンをクリックして設定画面に移動し、左のメニューから「Billing」を選択。

支払い方法を登録していない場合はクレジット残高の下に「Add payment details」というボタンが表示されるのでクリックします。

参考:https://platform.openai.com/settings/organization/billing/overview

登録できる支払い方法はクレジットカードのみです。個人での利用か会社での利用かを選んで、必要な情報を入力しましょう。

参考:https://platform.openai.com/settings/organization/billing/overview

クレジットカードを登録した後はAPI用のクレジットを購入する必要があります。最低5ドルからで一度に保有できるクレジットの上限は100ドルです。

また、購入したクレジットの有効期限は1年なので、必要な分だけ購入するのがいいでしょう。

これでOpenAIのAPIキーを使えるようになります

Anthropic APIキーの取得

AnthropicのAPIキーでも大丈夫です。OpenAIかAnthropicどちらかのAPIキーは用意します。AnthropicのAPI費は従量課金制ではなく、前払い制なので、あらかじめクレジットカードで料金を支払っておきましょう。

参考:https://www.anthropic.com/api
参考:https://www.anthropic.com/api
参考:https://www.anthropic.com/api

ここまできたらあとは「Create Key」をクリックすればAPIキーの作成が完了します

google colaboratoryでbabyagi-2oの実装

では実際にgoogle colaboratoryでbabyagi-2oを実装します。

必要ライブラリのインストールはこちら
!git clone https://github.com/yoheinakajima/babyagi-2o.git
%cd babyagi-2o
!pip install litellm
モデルの指定とAPIキーの登録はこちら
import os
os.environ['LITELLM_MODEL'] = 'gpt-4'  # 使用するモデルを指定
os.environ['OPENAI_API_KEY'] = 'your_api_key' 
実行はこちら
!python main.py
結果はこちら
Registered tool: create_or_update_tool
Registered tool: install_package
Registered tool: task_completed
Describe the task you want to complete: Function to display the current time
Iteration 1 running...

Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new
LiteLLM.Info: If you need to debug this error, use `litellm.set_verbose=True'.

Error: Error in main loop: litellm.APIError: APIError: OpenAIException - Invalid response object Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5708, in convert_to_model_response_object
    fixed_tool_calls = _handle_invalid_parallel_tool_calls(
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5578, in _handle_invalid_parallel_tool_calls
    function_args = json.loads(tool_call.function.arguments)
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 3 column 12 (char 47)


received_args={'response_object': {'id': 'chatcmpl-AJuvRaqsmA36osaR0GqRPOrQYDcGm', 'choices': [{'finish_reason': 'tool_calls', 'index': 0, 'logprobs': None, 'message': {'content': None, 'refusal': None, 'role': 'assistant', 'audio': None, 'function_call': None, 'tool_calls': [{'id': 'call_dndWWeRcpntQ9MWvcsdjMPb5', 'function': {'arguments': '{\n  "name": "display_current_time",\n  "code": "\nimport datetime\n\ndef display_current_time():\n    # Print the current date and time\n    now = datetime.datetime.now()\n    print(\'Current date and time:\', now)\n",\n  "description": "Prints the current date and time.",\n  "parameters": {}\n}', 'name': 'create_or_update_tool'}, 'type': 'function'}]}}], 'created': 1729310417, 'model': 'gpt-4-0613', 'object': 'chat.completion', 'service_tier': None, 'system_fingerprint': None, 'usage': {'completion_tokens': 77, 'prompt_tokens': 596, 'total_tokens': 673, 'completion_tokens_details': {'audio_tokens': None, 'reasoning_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}}}, 'model_response_object': ModelResponse(id='chatcmpl-10f88365-e6f3-43e3-8c05-67335bf956b7', choices=[Choices(finish_reason='stop', index=0, message=Message(content=None, role='assistant', tool_calls=None, function_call=None))], created=1729310416, model=None, object='chat.completion', system_fingerprint=None, usage=Usage(completion_tokens=0, prompt_tokens=0, total_tokens=0, completion_tokens_details=None, prompt_tokens_details=None)), 'response_type': 'completion', 'stream': False, 'start_time': None, 'end_time': None, 'hidden_params': None, '_response_headers': {'date': 'Sat, 19 Oct 2024 04:00:19 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Request-ID', 'openai-organization': 'user-bfu4egavnisaurs9vpfloer3', 'openai-processing-ms': '2532', 'openai-version': '2020-10-01', 'x-ratelimit-limit-requests': '10000', 'x-ratelimit-limit-tokens': '10000', 'x-ratelimit-remaining-requests': '9999', 'x-ratelimit-remaining-tokens': '9417', 'x-ratelimit-reset-requests': '8.64s', 'x-ratelimit-reset-tokens': '3.498s', 'x-request-id': 'req_36e398e42806f1d35b88897cb43758ec', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'cf-cache-status': 'DYNAMIC', 'set-cookie': '__cf_bm=uVv8U.Jfi51KfgI9BtVHHpH4nychi0G1DH0lsA34OxM-1729310419-1.0.1.1-VMkZI7HNM5IUjpQNltgOxXZClFUzDf3wiIFLC7UWSJ6gcYOinkuyHl17PlNeWbLO4p_QT4FWWIKoz._yGoOiEQ; path=/; expires=Sat, 19-Oct-24 04:30:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=hyueC2g8lLoBGelphEgxkkCmriBrdOaMUEefrZ1Elyc-1729310419758-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None', 'x-content-type-options': 'nosniff', 'server': 'cloudflare', 'cf-ray': '8d4ddc3afd9e2b62-LAX', 'content-encoding': 'gzip', 'alt-svc': 'h3=":443"; ma=86400'}, 'convert_tool_call_to_json_mode': None}
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5708, in convert_to_model_response_object
    fixed_tool_calls = _handle_invalid_parallel_tool_calls(
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5578, in _handle_invalid_parallel_tool_calls
    function_args = json.loads(tool_call.function.arguments)
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 3 column 12 (char 47)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/llms/OpenAI/openai.py", line 818, in completion
    raise e
  File "/usr/local/lib/python3.10/dist-packages/litellm/llms/OpenAI/openai.py", line 769, in completion
    return convert_to_model_response_object(
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5905, in convert_to_model_response_object
    raise Exception(
Exception: Invalid response object Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5708, in convert_to_model_response_object
    fixed_tool_calls = _handle_invalid_parallel_tool_calls(
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5578, in _handle_invalid_parallel_tool_calls
    function_args = json.loads(tool_call.function.arguments)
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 3 column 12 (char 47)


received_args={'response_object': {'id': 'chatcmpl-AJuvRaqsmA36osaR0GqRPOrQYDcGm', 'choices': [{'finish_reason': 'tool_calls', 'index': 0, 'logprobs': None, 'message': {'content': None, 'refusal': None, 'role': 'assistant', 'audio': None, 'function_call': None, 'tool_calls': [{'id': 'call_dndWWeRcpntQ9MWvcsdjMPb5', 'function': {'arguments': '{\n  "name": "display_current_time",\n  "code": "\nimport datetime\n\ndef display_current_time():\n    # Print the current date and time\n    now = datetime.datetime.now()\n    print(\'Current date and time:\', now)\n",\n  "description": "Prints the current date and time.",\n  "parameters": {}\n}', 'name': 'create_or_update_tool'}, 'type': 'function'}]}}], 'created': 1729310417, 'model': 'gpt-4-0613', 'object': 'chat.completion', 'service_tier': None, 'system_fingerprint': None, 'usage': {'completion_tokens': 77, 'prompt_tokens': 596, 'total_tokens': 673, 'completion_tokens_details': {'audio_tokens': None, 'reasoning_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}}}, 'model_response_object': ModelResponse(id='chatcmpl-10f88365-e6f3-43e3-8c05-67335bf956b7', choices=[Choices(finish_reason='stop', index=0, message=Message(content=None, role='assistant', tool_calls=None, function_call=None))], created=1729310416, model=None, object='chat.completion', system_fingerprint=None, usage=Usage(completion_tokens=0, prompt_tokens=0, total_tokens=0, completion_tokens_details=None, prompt_tokens_details=None)), 'response_type': 'completion', 'stream': False, 'start_time': None, 'end_time': None, 'hidden_params': None, '_response_headers': {'date': 'Sat, 19 Oct 2024 04:00:19 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Request-ID', 'openai-organization': 'user-bfu4egavnisaurs9vpfloer3', 'openai-processing-ms': '2532', 'openai-version': '2020-10-01', 'x-ratelimit-limit-requests': '10000', 'x-ratelimit-limit-tokens': '10000', 'x-ratelimit-remaining-requests': '9999', 'x-ratelimit-remaining-tokens': '9417', 'x-ratelimit-reset-requests': '8.64s', 'x-ratelimit-reset-tokens': '3.498s', 'x-request-id': 'req_36e398e42806f1d35b88897cb43758ec', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'cf-cache-status': 'DYNAMIC', 'set-cookie': '__cf_bm=uVv8U.Jfi51KfgI9BtVHHpH4nychi0G1DH0lsA34OxM-1729310419-1.0.1.1-VMkZI7HNM5IUjpQNltgOxXZClFUzDf3wiIFLC7UWSJ6gcYOinkuyHl17PlNeWbLO4p_QT4FWWIKoz._yGoOiEQ; path=/; expires=Sat, 19-Oct-24 04:30:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=hyueC2g8lLoBGelphEgxkkCmriBrdOaMUEefrZ1Elyc-1729310419758-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None', 'x-content-type-options': 'nosniff', 'server': 'cloudflare', 'cf-ray': '8d4ddc3afd9e2b62-LAX', 'content-encoding': 'gzip', 'alt-svc': 'h3=":443"; ma=86400'}, 'convert_tool_call_to_json_mode': None}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/main.py", line 1566, in completion
    raise e
  File "/usr/local/lib/python3.10/dist-packages/litellm/main.py", line 1539, in completion
    response = openai_chat_completions.completion(
  File "/usr/local/lib/python3.10/dist-packages/litellm/llms/OpenAI/openai.py", line 828, in completion
    raise OpenAIError(
litellm.llms.OpenAI.openai.OpenAIError: Invalid response object Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5708, in convert_to_model_response_object
    fixed_tool_calls = _handle_invalid_parallel_tool_calls(
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5578, in _handle_invalid_parallel_tool_calls
    function_args = json.loads(tool_call.function.arguments)
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 3 column 12 (char 47)


received_args={'response_object': {'id': 'chatcmpl-AJuvRaqsmA36osaR0GqRPOrQYDcGm', 'choices': [{'finish_reason': 'tool_calls', 'index': 0, 'logprobs': None, 'message': {'content': None, 'refusal': None, 'role': 'assistant', 'audio': None, 'function_call': None, 'tool_calls': [{'id': 'call_dndWWeRcpntQ9MWvcsdjMPb5', 'function': {'arguments': '{\n  "name": "display_current_time",\n  "code": "\nimport datetime\n\ndef display_current_time():\n    # Print the current date and time\n    now = datetime.datetime.now()\n    print(\'Current date and time:\', now)\n",\n  "description": "Prints the current date and time.",\n  "parameters": {}\n}', 'name': 'create_or_update_tool'}, 'type': 'function'}]}}], 'created': 1729310417, 'model': 'gpt-4-0613', 'object': 'chat.completion', 'service_tier': None, 'system_fingerprint': None, 'usage': {'completion_tokens': 77, 'prompt_tokens': 596, 'total_tokens': 673, 'completion_tokens_details': {'audio_tokens': None, 'reasoning_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}}}, 'model_response_object': ModelResponse(id='chatcmpl-10f88365-e6f3-43e3-8c05-67335bf956b7', choices=[Choices(finish_reason='stop', index=0, message=Message(content=None, role='assistant', tool_calls=None, function_call=None))], created=1729310416, model=None, object='chat.completion', system_fingerprint=None, usage=Usage(completion_tokens=0, prompt_tokens=0, total_tokens=0, completion_tokens_details=None, prompt_tokens_details=None)), 'response_type': 'completion', 'stream': False, 'start_time': None, 'end_time': None, 'hidden_params': None, '_response_headers': {'date': 'Sat, 19 Oct 2024 04:00:19 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Request-ID', 'openai-organization': 'user-bfu4egavnisaurs9vpfloer3', 'openai-processing-ms': '2532', 'openai-version': '2020-10-01', 'x-ratelimit-limit-requests': '10000', 'x-ratelimit-limit-tokens': '10000', 'x-ratelimit-remaining-requests': '9999', 'x-ratelimit-remaining-tokens': '9417', 'x-ratelimit-reset-requests': '8.64s', 'x-ratelimit-reset-tokens': '3.498s', 'x-request-id': 'req_36e398e42806f1d35b88897cb43758ec', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'cf-cache-status': 'DYNAMIC', 'set-cookie': '__cf_bm=uVv8U.Jfi51KfgI9BtVHHpH4nychi0G1DH0lsA34OxM-1729310419-1.0.1.1-VMkZI7HNM5IUjpQNltgOxXZClFUzDf3wiIFLC7UWSJ6gcYOinkuyHl17PlNeWbLO4p_QT4FWWIKoz._yGoOiEQ; path=/; expires=Sat, 19-Oct-24 04:30:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=hyueC2g8lLoBGelphEgxkkCmriBrdOaMUEefrZ1Elyc-1729310419758-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None', 'x-content-type-options': 'nosniff', 'server': 'cloudflare', 'cf-ray': '8d4ddc3afd9e2b62-LAX', 'content-encoding': 'gzip', 'alt-svc': 'h3=":443"; ma=86400'}, 'convert_tool_call_to_json_mode': None}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/content/babyagi-2o/main.py", line 146, in run_main_loop
    response = completion(model=MODEL_NAME, messages=messages, tools=tools, tool_choice="auto")
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 1007, in wrapper
    raise e
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 897, in wrapper
    result = original_function(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/litellm/main.py", line 2978, in completion
    raise exception_type(
  File "/usr/local/lib/python3.10/dist-packages/litellm/litellm_core_utils/exception_mapping_utils.py", line 2116, in exception_type
    raise e
  File "/usr/local/lib/python3.10/dist-packages/litellm/litellm_core_utils/exception_mapping_utils.py", line 404, in exception_type
    raise APIError(
litellm.exceptions.APIError: litellm.APIError: APIError: OpenAIException - Invalid response object Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5708, in convert_to_model_response_object
    fixed_tool_calls = _handle_invalid_parallel_tool_calls(
  File "/usr/local/lib/python3.10/dist-packages/litellm/utils.py", line 5578, in _handle_invalid_parallel_tool_calls
    function_args = json.loads(tool_call.function.arguments)
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Invalid control character at: line 3 column 12 (char 47)


received_args={'response_object': {'id': 'chatcmpl-AJuvRaqsmA36osaR0GqRPOrQYDcGm', 'choices': [{'finish_reason': 'tool_calls', 'index': 0, 'logprobs': None, 'message': {'content': None, 'refusal': None, 'role': 'assistant', 'audio': None, 'function_call': None, 'tool_calls': [{'id': 'call_dndWWeRcpntQ9MWvcsdjMPb5', 'function': {'arguments': '{\n  "name": "display_current_time",\n  "code": "\nimport datetime\n\ndef display_current_time():\n    # Print the current date and time\n    now = datetime.datetime.now()\n    print(\'Current date and time:\', now)\n",\n  "description": "Prints the current date and time.",\n  "parameters": {}\n}', 'name': 'create_or_update_tool'}, 'type': 'function'}]}}], 'created': 1729310417, 'model': 'gpt-4-0613', 'object': 'chat.completion', 'service_tier': None, 'system_fingerprint': None, 'usage': {'completion_tokens': 77, 'prompt_tokens': 596, 'total_tokens': 673, 'completion_tokens_details': {'audio_tokens': None, 'reasoning_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}}}, 'model_response_object': ModelResponse(id='chatcmpl-10f88365-e6f3-43e3-8c05-67335bf956b7', choices=[Choices(finish_reason='stop', index=0, message=Message(content=None, role='assistant', tool_calls=None, function_call=None))], created=1729310416, model=None, object='chat.completion', system_fingerprint=None, usage=Usage(completion_tokens=0, prompt_tokens=0, total_tokens=0, completion_tokens_details=None, prompt_tokens_details=None)), 'response_type': 'completion', 'stream': False, 'start_time': None, 'end_time': None, 'hidden_params': None, '_response_headers': {'date': 'Sat, 19 Oct 2024 04:00:19 GMT', 'content-type': 'application/json', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-expose-headers': 'X-Request-ID', 'openai-organization': 'user-bfu4egavnisaurs9vpfloer3', 'openai-processing-ms': '2532', 'openai-version': '2020-10-01', 'x-ratelimit-limit-requests': '10000', 'x-ratelimit-limit-tokens': '10000', 'x-ratelimit-remaining-requests': '9999', 'x-ratelimit-remaining-tokens': '9417', 'x-ratelimit-reset-requests': '8.64s', 'x-ratelimit-reset-tokens': '3.498s', 'x-request-id': 'req_36e398e42806f1d35b88897cb43758ec', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'cf-cache-status': 'DYNAMIC', 'set-cookie': '__cf_bm=uVv8U.Jfi51KfgI9BtVHHpH4nychi0G1DH0lsA34OxM-1729310419-1.0.1.1-VMkZI7HNM5IUjpQNltgOxXZClFUzDf3wiIFLC7UWSJ6gcYOinkuyHl17PlNeWbLO4p_QT4FWWIKoz._yGoOiEQ; path=/; expires=Sat, 19-Oct-24 04:30:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None, _cfuvid=hyueC2g8lLoBGelphEgxkkCmriBrdOaMUEefrZ1Elyc-1729310419758-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None', 'x-content-type-options': 'nosniff', 'server': 'cloudflare', 'cf-ray': '8d4ddc3afd9e2b62-LAX', 'content-encoding': 'gzip', 'alt-svc': 'h3=":443"; ma=86400'}, 'convert_tool_call_to_json_mode': None}
Iteration 2 running...
Calling tool: create_or_update_tool with args: {'name': 'display_current_time', 'code': 'import datetime\ndef display_current_time():\n    return datetime.datetime.now()', 'description': 'This function displays the current date and time', 'parameters': {}}
Registered tool: display_current_time
Result of create_or_update_tool: Tool 'display_current_time' created/updated successfully.
Iteration 3 running...
Calling tool: display_current_time with args: {}
Result of display_current_time: 2024-10-19 04:00:27.080326
Iteration 4 running...
LLM Response:
The current date and time is: 2024-10-19 04:00:27.080326

Iteration 5 running...
Calling tool: task_completed with args: {}
Result of task_completed: Task marked as completed.
Task completed.
Max iterations reached or task completed.

今回の指示は現在の時刻を表示する関数を作成してください、にしていたので「The current date and time is: 2024-10-19 04:00:27.080326」が最後に表示されています。

生成AIとbabyagi-2oの比較検証

babyagi-2oはエラーを自己修正しながら、与えられたタスクを遂行してくれます。

そこで、ChatGPT-4oの結果とbabyagi-2oの出力結果に違いが出るかを比較検証してみたいと思います。

比較する内容はGitHubに掲載されているものを使います。以下のタスクをそのまま入力して実行してもらいます。

  • Scrape techmeme and provide a summary of headlines.(techmemeのスクレイピング)
  • Create a halloween flyer using DALLE to generate a background and overlaying a halloween message in big letters, then save the image.(DALLEを使って画像生成)

スクレイピングするサイトのホーム画面は以下です

参考:https://www.techmeme.com/
babyagi-2oのスクレイピングの結果はこちら
1. Tech Industry Legal and Regulatory Issues:
   - DJI is suing the US Department of Defense for designating it as a Chinese military company.
   - Google received a temporary stay on the Epic ruling, potentially delaying changes to Play Store practices.

2. AI and Machine Learning Developments:
   - A generative AI film competition called the Culver Cup is giving filmmakers AI tools to create short films.
   - Chinese companies like 01.ai and DeepSeek are adapting to export controls by focusing on smaller training data sets for AI models.
   - Meta introduced Spirit LM, an open-source multimodal language model for non-commercial use.

3. Corporate Acquisitions and Investments:
   - A rare battle between private equity firms KKR and Bain over the acquisition of Japanese software company Fuji Soft.

4. AI and Copyright:
   - Penguin Random House is amending its copyright notice to prohibit the use of its books for training AI models.

5. Tech Giants and AI:
   - A historical look at Microsoft's work in AI, from research to applications and future challenges.
   - OpenAI's contract with Microsoft includes a clause regarding AGI development, which OpenAI sees as a potential leverage point.

6. Open Source and Community Issues:
   - WP Engine is seeking a court injunction to restore its access to the WordPress.org open source repository.
ChatGPT-4oのスクレイピングの結果はこちら
Here are some key tech headlines from Techmeme today:

1. **Google's App Store Battle**: Google secured a delay in implementing changes to its Play Store amid its ongoing legal battle with Epic Games. The judge temporarily halted the requirement for Google to allow third-party app stores on Android while the company appeals【9†source】【10†source】.

2. **OpenAI and Microsoft Tensions**: OpenAI is reportedly exploring ways to renegotiate its deal with Microsoft, particularly over a clause that could sever Microsoft's access to OpenAI’s technology if OpenAI develops Artificial General Intelligence (AGI). This reflects rising tensions between the two companies【6†source】【9†source】.

3. **TikTok’s Financial Report**: TikTok’s European revenue soared to $4.57 billion in 2023, but losses nearly tripled to $1.3 billion due to rising costs and fines related to regulatory issues【8†source】.

4. **Nvidia-backed CoreWeave Expansion**: CoreWeave, a cloud GPU provider supported by Nvidia, secured a $650 million credit line. Over the past 18 months, the company raised $12.7 billion from equity and debt investors, marking rapid growth in the cloud computing space【8†source】.

These stories highlight ongoing legal battles, strategic partnerships, and financial developments in the tech world.

出力された結果をtechmemeのホーム画面で検索をかけても、ChatGPTもbabyagi-2oの結果どちらも引っかかりませんでした。

確かにどちらもスクレイピングはしてくれているのかもしれませんが、どこをスクレイピングしているのかを、こちら側で把握することができず、信憑性を見出せませんでした。

また、画像生成に関しては、「タスク完了」というメッセージは出ている一方で、画像が保存されていない・保存されていてもデータが壊れていて表示できないという結果でした。

画像生成は複数回試みましたが、タスク完了とエラー終了が繰り返され、不安定な動作が見られました。個人的な所感としては、まだまだ実用性には乏しいのかな、という印象を受けます。

なお、道徳性、倫理性を備えた人間のような自律型AIエージェントについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

WEEL
【Hierarchical Autonomous Agent Swarm】道徳性、倫理性を備えた人間のような自律型AIエージェントを使っ... Hierarchical Autonomous Agent Swarm (HAAS)の概要と使ってみた感想をお伝えします。HAASは、プロンプトを入力するだけでツールの作成と実行ができるAIツールです。AIエー...

まとめ

本記事では、自律型エージェント「babyagi-2o」について、その特徴や使い方、実際のコーディング例を解説しました。

babyagi-2oは、ユーザーが与えたタスクに応じてプログラムを自動生成し、エラーが発生しても自己修正する高度な機能を持っています。

特に、複雑なタスクにも対応できる柔軟性が魅力ですが、現時点ではエラーの不安定さや、生成されたツールの信頼性に課題が残っている印象です。

今後の改善により、さらに実用的で信頼性の高いツールになることが期待されます。自律型エージェントの進化と共に、タスク処理の自動化が加速し、開発者にとって強力なサポートとなるでしょう。

最後に

いかがだったでしょうか?

babyagi-2oのような自律型エージェントを活用すれば、業務の効率化や自動化が大幅に進み、コスト削減や開発スピードの向上が期待できます。生成AI導入を検討中の方は、ぜひ一度ご相談ください。

株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!

開発実績として、

・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント

などの開発実績がございます。

まずは、無料相談にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
LLM比較レポート

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、大規模言語モデル(LLM)を対象に、言語理解能力、生成能力、応答速度の各側面について比較・検証した資料も配布しております。この機会にぜひご活用ください。

投稿者

  • 翔平

    総合病院で10年間理学療法士として勤務し、その後Pythonを独学で学びデータアナリストとして転職。趣味はキックボクシング

  • URLをコピーしました!
  • URLをコピーしました!
目次