Python Programer Agent:ソースコード:PythonProgramerAgent.py


from tools.AIAgent import AIAgent
from tools.command_list import get_ai_agent
from langchain_community.callbacks import StreamlitCallbackHandler
import tools.command_list 
import tools.fllow_controller
import streamlit as st

from selenium.webdriver.common.by import By


class PythonProgramerAgent():
    def __init__(self, max_check=3):
        keyword_creater_name = "PythonProgramer"
        self.agent = AIAgent(keyword_creater_name,
                             get_ai_agent(keyword_creater_name),
                             [],
                             False)
        self.serch_result = []
        self.max_check = max_check

    # AIAgentと関数的互換性確保のために必要
    def get_respons(self, command):
        error_respons, respons_text = self.prgram(command)
        return respons_text
    def clear_memory(self):
        self.agent.clear_memory()
################################################

    def prgram(self, command):
        self.agent.update_system_prompt(get_ai_agent("PythonProgramer"))
        # コールバック関数の設定 (エージェントの動作の可視化用)
        st_cb = StreamlitCallbackHandler(
            st.container(), expand_new_thoughts=True)
        tools.command_list.g_time_keeper.wait()
        respons = self.agent.get_respons(command, st_cb)
        return  self.respons_programe_check(respons)

    def respons_programe_check(self, check_prompt):
        # 次の作業者を決定。
        count = 0
        respons_text = check_prompt
        # pythonで エラーが出るようなら自動で作りなおしを依頼。
       
        while True:
            error_respons = tools.fllow_controller.python_error_check(respons_text)
            if False is tools.fllow_controller.get_code_error():
                error_respons = ""
                return error_respons, respons_text
            if self.max_check <= count:
                error_respons = "3回以上やり直してもエラーを修正しきれませんでした。"
                return error_respons, respons_text
            print(error_respons)

            respons_text = self.think_agent(error_respons+"\r\n直してください。")
            count += 1

    def think_agent(self, prompt):
        tools.command_list.g_time_keeper.wait()
        # AIエージェントの思考
        with st.chat_message("PythonProgramer"):
            # コールバック関数の設定 (エージェントの動作の可視化用)
            st_cb = StreamlitCallbackHandler(
                st.container(), expand_new_thoughts=True)
            # エージェントを実行
            response = self.agent.get_respons(prompt, st_cb)
            st.write(response)
        return response

AIによる説明

PythonProgramerAgentクラスのリファレンスマニュアル

クラス名: PythonProgramerAgent

説明: Pythonプログラミングに特化したAIエージェントクラス。

属性:

  • max_check (int): エラー修正の最大試行回数。デフォルトは3。
  • agent (AIAgent): 基礎となるAIエージェントオブジェクト。
  • serch_result (list): 検索結果を格納するリスト。

メソッド:

  • __init__(self, max_check=3): コンストラクタ。
    • 引数:
      • max_check (int): エラー修正の最大試行回数。デフォルトは3。
  • get_respons(self, command): AIAgentとの関数的互換性確保のためのメソッド。
    • 引数:
      • command (str): 実行するコマンド。
    • 戻り値:
      • str: エージェントの応答。
  • clear_memory(self): エージェントのメモリをクリアする。
  • prgram(self, command): Pythonプログラムの生成とエラー修正を行うメソッド。
    • 引数:
      • command (str): 実行するコマンド。
    • 戻り値:
      • tuple: エラーメッセージと生成されたプログラムコード。
  • respons_programe_check(self, check_prompt): 生成されたプログラムコードのエラーチェックと修正を行うメソッド。
    • 引数:
      • check_prompt (str): 生成されたプログラムコード。
    • 戻り値:
      • tuple: エラーメッセージと修正されたプログラムコード。
  • think_agent(self, prompt): AIエージェントにプログラムコードの修正を依頼するメソッド。
    • 引数:
      • prompt (str): エージェントへの指示。
    • 戻り値:
      • str: 修正されたプログラムコード。

使用方法:

# PythonProgramerAgentオブジェクトを作成
agent = PythonProgramerAgent()

# プログラムコードを生成
code = agent.prgram("Pythonでリストの要素を逆順に並べ替えるプログラムを作成してください。")

# 生成されたコードを出力
print(code)

注意:

  • このクラスは、Streamlit環境での使用を想定しています。
  • tools.command_list と tools.fllow_controller モジュールは、このクラスで使用するために必要です。
  • max_check 属性は、エラー修正の最大試行回数を設定します。
  • think_agent メソッドは、AIエージェントにプログラムコードの修正を依頼します。
  • respons_programe_check メソッドは、生成されたプログラムコードのエラーチェックと修正を行います。
  • prgram メソッドは、Pythonプログラムの生成とエラー修正を行います。