|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
from evoagentx.benchmark import MBPPPLUS, AFlowMBPPPLUS |
|
|
from evoagentx.optimizers import AFlowOptimizer |
|
|
from evoagentx.models import LiteLLMConfig, LiteLLM, OpenAILLMConfig, OpenAILLM |
|
|
import os |
|
|
|
|
|
EXPERIMENTAL_CONFIG = { |
|
|
"humaneval": { |
|
|
"question_type": "code", |
|
|
"operators": ["Custom", "CustomCodeGenerate", "Test", "ScEnsemble"] |
|
|
}, |
|
|
"mbpp": { |
|
|
"question_type": "code", |
|
|
"operators": ["Custom", "CustomCodeGenerate", "Test", "ScEnsemble"] |
|
|
}, |
|
|
"hotpotqa": { |
|
|
"question_type": "qa", |
|
|
"operators": ["Custom", "AnswerGenerate", "QAScEnsemble"] |
|
|
}, |
|
|
"gsm8k": { |
|
|
"question_type": "math", |
|
|
"operators": ["Custom", "ScEnsemble", "Programmer"] |
|
|
}, |
|
|
"math": { |
|
|
"question_type": "math", |
|
|
"operators": ["Custom", "ScEnsemble", "Programmer"] |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
class MBPPSplits(AFlowMBPPPLUS): |
|
|
|
|
|
def _load_data(self): |
|
|
|
|
|
|
|
|
mbpp_test_data = AFlowMBPPPLUS().get_dev_data() |
|
|
|
|
|
import numpy as np |
|
|
np.random.seed(42) |
|
|
permutation = np.random.permutation(len(mbpp_test_data)) |
|
|
|
|
|
dev_data_task_ids = [mbpp_test_data[idx]["task_id"] for idx in permutation[:30]] |
|
|
super()._load_data() |
|
|
full_data = self._dev_data |
|
|
self._dev_data = [example for example in full_data if example["task_id"] in dev_data_task_ids] |
|
|
|
|
|
|
|
|
def main(): |
|
|
|
|
|
from evoagentx.models import OpenAILLMConfig, OpenAILLM,AzureOpenAIConfig,LiteLLMConfig,LiteLLM |
|
|
from evoagentx.workflow import SEWWorkFlowGraph |
|
|
from evoagentx.agents import AgentManager |
|
|
from evoagentx.benchmark import ClassEval |
|
|
from evoagentx.evaluators import Evaluator |
|
|
from evoagentx.optimizers import SEWOptimizer |
|
|
from evoagentx.core.callbacks import suppress_logger_info |
|
|
|
|
|
os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"] = "gpt-4o-mini" |
|
|
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://75244-mfztkr7x-eastus2.cognitiveservices.azure.com/" |
|
|
os.environ["AZURE_OPENAI_KEY"] = "8PNMdsUYGdMPsCfl0baO0hjtnGE2m40zJTrUGC3vKnHdpjnkOgeQJQQJ99BIACHYHv6XJ3w3AAAAACOG7VZI" |
|
|
os.environ["AZURE_OPENAI_API_VERSION"] = "2024-12-01-preview" |
|
|
|
|
|
|
|
|
|
|
|
llm_config = LiteLLMConfig(model="azure/" + os.getenv("AZURE_OPENAI_DEPLOYMENT_NAME"), |
|
|
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"), |
|
|
azure_key=os.getenv("AZURE_OPENAI_KEY"), |
|
|
api_version=os.getenv("AZURE_OPENAI_API_VERSION", "2024-12-01-preview"), top_p=0.85, temperature=0.2, frequency_penalty=0.0, presence_penalty=0.0) |
|
|
|
|
|
executor_llm = LiteLLM(config=llm_config) |
|
|
optimizer_llm = LiteLLM(config=llm_config) |
|
|
|
|
|
|
|
|
mbpp_input = MBPPSplits() |
|
|
mbpp = AFlowMBPPPLUS() |
|
|
mbpp._dev_data = mbpp_input._dev_data |
|
|
mbpp.error_list = {} |
|
|
|
|
|
optimizer = AFlowOptimizer( |
|
|
graph_path = "examples/aflow/code_generation", |
|
|
optimized_path = "examples/aflow/mbppplus_full_new/optimized", |
|
|
optimizer_llm=optimizer_llm, |
|
|
executor_llm=executor_llm, |
|
|
validation_rounds=5, |
|
|
eval_rounds=1, |
|
|
max_rounds=10, |
|
|
**EXPERIMENTAL_CONFIG["mbpp"] |
|
|
) |
|
|
|
|
|
|
|
|
optimizer.optimize(mbpp) |
|
|
|
|
|
|
|
|
optimizer.test(mbpp) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
main() |