Evalúe los modelos Operai GPT / Google Vertex Ai Palm2 / Gemini o Ollama locales contra una tarea.
Distribuya tareas arbitrarias como YAML a modelos de idiomas locales o alojados. En el modelo, las tareas de Forge se desglosan por: agentes , postprocesador opcional y evaluadores . Las tareas tienen un mensaje de nivel superior: el trabajo real que hacer. Por ejemplo, puede usar lo siguiente como un mensaje de tarea: "Implemente un ejemplo simple de malloc en C con la siguiente firma: void* malloc(size_t size) ". A continuación, puede incluir una solicitud de postprocesador a un modelo local para extraer solo el código fuente del programa de la respuesta del agente. Finalmente, su evaluador recibiría instrucciones de actuar como un experto en la tarea idealmente con ejemplos basados en COT (cadena de pensamiento) incluidos.
.jsonpython src/main.py git clone https://github.com/Brandon7CC/MODELFORGE
cd MODELFORGE/
python -m venv forge-env
source forge-env/bin/activate
pip install -r requirements.txt
python src/main.py -h
echo " Done! Next, you can try FizzBuzz with Ollama locally!npython src/main.py task_configs/FizzBuzz.yaml FizzBuzz es una pregunta clásica de "Can You Code". Es simple, pero puede proporcionar un nivel de visión de cómo piensa un desarrollador a través de un problema. Por ejemplo, en Python, el uso del flujo de control, lambdas, etc. Aquí está la declaración del problema:
Escriba un programa para mostrar números de 1 a n. Para múltiplos de tres, imprima "efervescencia" en lugar del número, y para los múltiplos de cinco, imprima "zumbido". Para números que son múltiplos de tres y cinco, imprima "FizzBuzz".
A continuación, haremos nuestro archivo de configuración de tareas (esto ya está hecho para usted en task_configs/FizzBuzz.yaml ), pero lo guiaremos a través de él. Para hacerlo, definiremos una tarea de nivel superior llamada "FizzBuzz", le daremos un aviso y la cantidad de veces que queremos que él modele para resolver el problema.
tasks :
- name : FizzBuzz
# If a run count is not provided then the task will only run until evaluator success.
run_count : 5
prompt : |
Write a program to display numbers from 1 to n. For multiples of three, print "Fizz"
instead of the number, and for the multiples of five, print "Buzz". For numbers which
are multiples of both three and five, print "FizzBuzz".
Let's think step by step.Ahora definiremos nuestro "agente" , el modelo que actuará como un experto para completar nuestra tarea. Los modelos pueden ser cualquiera de los modelos Ollama alojados / locales compatibles (por ejemplo, Gemini de Google, GPT-4 de OpenAI o MixTral8X7B de Mistral AI a través de Ollama).
tasks :
- name : FizzBuzz
run_count : 5
prompt : |
...
agent :
# We'll generate a custom model for each base model
base_model : mixtral:8x7b-instruct-v0.1-q4_1
temperature : 0.98
system_prompt : |
You're an expert Python developer. Follow these requirement **exactly**:
- The code you produce is at the principal level;
- You follow modern object oriented programming patterns;
- You list your requirements and design a simple test before implementing.
Review the user's request and follow these requirements.Opcionalmente podemos crear un "postprocesador" . Solo queremos que se evalúe el código por el agente, así que aquí vamos a hacer que nuestro modelo postprocesador extraiga el código fuente de la respuesta del agente.
tasks :
- name : FizzBuzz
# If a run count is not provided then the task will only run until evaluator success.
run_count : 5
prompt : |
...
agent :
# We'll generate a custom model for each base model
base_model : gpt-4-1106-preview
temperature : 0.98
system_prompt : |
...
postprocessor :
base_model : mistral
temperature : 0.1
system_prompt : |
You have one job: return the source code provided in the user's message.
**ONLY** return the exact source code. Your response is not read by a human.Por último, querrá un modelo de "evaluador" que actúe como un experto en la revisión del resultado del agente/postprocesador. El trabajo del evaluador es devolver verdadero / falso. Además, podemos fallar hasta 10 veces , reorganizando el agente. Aquí hay un poco de la magia , incluiremos un breve resumen del intento fallido, una crítica dentro de la próxima consulta al agente. Esto permite al agente iterar sobre sí mismo de una manera mucho más efectiva . Aquí queremos que nuestro evaluador revise la implementación de FizzBuzz.
tasks :
- name : FizzBuzz
# If a run count is not provided then the task will only run until evaluator success.
run_count : 5
prompt : |
...
agent :
# We'll generate a custom model for each base model
base_model : codellama
temperature : 0.98
system_prompt : |
...
postprocessor :
base_model : gemini-pro
temperature : 0.1
system_prompt : |
...
# Evaluators have defined system prompts to only return true / false for their domain.
evaluator :
base_model : gpt-4-1106-preview
temperature : 0.1
system_prompt : |
Assess if a given sample program correctly implements Fizz Buzz.
The program should display numbers from 1 to n. For multiples of three, it should
print "Fizz" instead of the number, for the multiples of five, it should print "Buzz",
and for numbers which are multiples of both three and five, it should print "FizzBuzz".
Guidelines for Evaluation
- Correctness: Verify that the program outputs "Fizz" for multiples of 3, "Buzz" for
multiples of 5, and "FizzBuzz" for numbers that are multiples of both 3 and 5. For
all other numbers, it should output the number itself.
- Range Handling: Check if the program correctly handles the range from 1 to n, where
n is the upper limit provided as input.
- Error Handling: Assess if the program includes basic error handling, such as ensuring
the input is a positive integer.Este trabajo se inspiró en el enfoque de FunSearch de Google Deepmind para encontrar una solución novedosa para el problema del conjunto de tope. A nivel macro, esto se hizo mediante el desarrollo de ejemplos basados en COT (cadena de pensamiento), lo que provocó repetidamente Palm2 para generar una gran cantidad de programas y luego evaluar esos programas en varios niveles.