Bewerten Sie gehostete OpenAI GPT / Google Vertex AI Palm2 / Gemini oder lokale Ollama -Modelle gegen eine Aufgabe.
Verteilen Sie willkürliche Aufgaben als YAML an lokale oder gehostete Sprachmodelle. In Model Forge -Aufgaben werden von: Agenten , optionalem Postprozessor und Evaluatoren abgebaut. Aufgaben haben eine Eingabeaufforderung auf höchster Ebene - die tatsächliche Arbeit. Sie können beispielsweise die folgende Aufgabe als Aufgabe verwenden: "Implementieren Sie ein einfaches Beispiel für malloc in C mit der folgenden Signatur: void* malloc(size_t size) ". Als nächstes können Sie eine Postprozessor -Anfrage an ein lokales Modell angeben, um nur den Quellcode des Programms aus der Antwort des Agenten zu extrahieren. Schließlich wird Ihr Bewerter angewiesen, als Experte in der Aufgabe idealerweise mit COT -Beispiele (Kette der Gedankenkette) aufzutreten.
.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 ist eine klassische Frage "Can You Code". Es ist einfach, kann aber einen Einblick in die Überlegung eines Problems geben. Zum Beispiel in Python, die Verwendung von Kontrollfluss, Lambdas usw. Hier ist die Problemanweisung:
Schreiben Sie ein Programm, um Nummern von 1 bis n anzuzeigen. Drucken Sie für Vielfache von drei Dreier "Fizz" anstelle der Anzahl und für die Vielfachen von fünf, "Buzz". Drucken Sie für Zahlen "Fizzbuzz".
Als nächstes werden wir unsere Task -Konfigurationsdatei erstellen (dies ist bereits für Sie in task_configs/FizzBuzz.yaml ), aber wir werden Sie durch sie führen. Dazu definieren wir eine Top -Level -Aufgabe namens "Fizzbuzz", geben Sie eine Eingabeaufforderung und die Häufigkeit, mit der wir das Problem lösen möchten.
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.Jetzt definieren wir unseren "Agenten" - das Modell, das als Experte für unsere Aufgabe fungiert. Modelle können eines der unterstützten gehosteten / lokalen Ollama-Modelle sein (z. B. Google Gemini, OpenAIs GPT-4 oder Mistral AI Mixtral8x7b über 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.Optional können wir einen "Postprozessor" erstellen. Wir möchten nur, dass der vom Agent ausgefüllte Code bewertet wird. Hier werden unser Postprozessormodell den Quellcode aus der Antwort des Agenten extrahiert.
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.Schließlich möchten Sie ein "Evaluator" -Modell, das als Experte für die Überprüfung der Ausgabe des Agenten/Postprozessors fungiert. Die Aufgabe des Bewerters besteht darin, True / False zurückzugeben. Darüber hinaus können wir bis zu 10 Mal nicht bestanden -den Agenten erneut formulieren. Hier war ein bisschen von der Magie, die hereinkommt - wir werden eine kurze Zusammenfassung des gescheiterten Versuchs aufnehmen - eine Kritik innerhalb der nächsten Abfrage an den Agenten. Dies ermöglicht es dem Agenten, auf sich viel effektiver auf sich selbst zu iterieren. Hier möchten wir, dass unser Bewerter die Implementierung von Fizzbuzz überprüft.
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.Diese Arbeit wurde von Google DeepMinds FunSearch -Ansatz inspiriert, um eine neuartige Lösung für das CAP -Set -Problem zu finden. Auf der Makroebene wurde dies durch die Entwicklung von COT -Beispielen (Kette der Gedankenkette) durchgeführt, die wiederholt Palm2 dazu veranlasste, viele Programme zu generieren und diese Programme dann auf mehreren Ebenen zu bewerten.