Évaluez les modèles Hostai Openai GPT / Google Vertex AI PALM2 / GEMINI ou locaux sur une tâche.
Distribuez des tâches arbitraires en tant que YAML aux modèles de langage local ou hébergé. Dans le modèle, les tâches de forge sont décomposées par: les agents , le post-processeur facultatif et les évaluateurs . Les tâches ont une invite de haut niveau - le travail réel à faire. Par exemple, vous pouvez utiliser ce qui suit comme une invite de tâche: "Implémentez un exemple simple de malloc en C avec la signature suivante: void* malloc(size_t size) ". Ensuite, vous pouvez inclure une demande de postprocesseur à un modèle local pour extraire uniquement le code source du programme à partir de la réponse de l'agent. Enfin, votre évaluateur serait chargé d'agir en tant qu'expert dans la tâche idéalement avec des exemples d'exemples basés sur Cot (chaîne de pensée) inclus.
.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 est une question classique "pouvez-vous coder". C'est simple, mais peut fournir un niveau de compréhension de la façon dont un développeur pense à travers un problème. Par exemple, dans Python, l'utilisation du flux de contrôle, des lambdas, etc. Voici l'énoncé du problème:
Écrivez un programme pour afficher les numéros de 1 à n. Pour les multiples de trois, imprimez "Fizz" au lieu du nombre, et pour les multiples de cinq, imprimez "Buzz". Pour les nombres qui sont des multiples de trois et cinq, imprimez "FizzBuzz".
Ensuite, nous ferons notre fichier de configuration de tâche (cela est déjà fait pour vous dans task_configs/FizzBuzz.yaml ), mais nous vous guiderons à travers. Pour ce faire, nous définirons une tâche de haut niveau appelée "FizzBuzz", donnez-lui une invite et le nombre de fois où nous voulons qu'il résout le problème.
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.Nous allons maintenant définir notre "agent" - le modèle qui agira comme un expert pour terminer notre tâche. Les modèles peuvent être l'un des modèles Olllama hébergés / locaux pris en charge (par exemple, Gemini de Google, GPT-4 d'OpenAI ou Mistral AI Mixtral8x7b via Olllama).
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.Éventuellement, nous pouvons créer un "postprocesseur" . Nous voulons seulement que le code terminé par l'agent soit évalué, nous allons donc ici que notre modèle postprocesseur extrait le code source de la réponse de l'agent.
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.Enfin, vous voudrez un modèle "évaluateur" qui agira en tant qu'expert dans l'examen de la sortie de l'agent / post-processeur. Le travail de l'évaluateur est de retourner True / False. De plus, nous pouvons échouer jusqu'à 10 fois - remettre à nouveau l'agent. Voici un peu de la magie dans le domaine - nous incluons un bref résumé de la tentative ratée - une critique dans la prochaine requête de l'agent. Cela permet à l'agent d'itréger sur lui-même une manière beaucoup plus efficace . Ici, nous voulons que notre évaluateur passe en revue la mise en œuvre 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.Ce travail a été inspiré par l'approche FunSearch de Google Deepmind pour trouver une nouvelle solution au problème de plafond. Au niveau macro, cela a été fait en développant des exemples basés sur COT (chaîne de pensée), ce qui a incité à plusieurs reprises Palm2 à générer de grandes quantités de programmes, puis à évaluer ces programmes à plusieurs niveaux.