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プログラムの生成とエラー修正を行います。