Avalie os modelos Hosted OpenAi GPT / Google Vertex AI Palm2 / Gemini ou Ollama local contra uma tarefa.
Distribua tarefas arbitrárias como YAML para modelos de idiomas locais ou hospedados. Nas tarefas de forjo do modelo são divididas por: agentes , pós -processador opcional e avaliadores . As tarefas têm um prompt de nível superior - o trabalho real a fazer. Por exemplo, você pode usar o seguinte como um prompt de tarefa: "Implemente um exemplo simples de malloc em C com a seguinte assinatura: void* malloc(size_t size) ". Em seguida, você pode incluir uma solicitação de pós -processador a um modelo local para extrair apenas o código -fonte do programa da resposta do agente. Finalmente, seu avaliador seria instruído a atuar como especialista na tarefa, idealmente com exemplos de exemplos baseados em BOT (cadeia de pensamento) incluídos.
.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 O FizzBuzz é uma pergunta clássica "você pode codificar". É simples, mas pode fornecer um nível de insight sobre como um desenvolvedor pensa através de um problema. Por exemplo, em Python, o uso do fluxo de controle, lambdas, etc. Aqui está a declaração do problema:
Escreva um programa para exibir números de 1 a n. Para múltiplos de três, imprima "Fizz" em vez do número, e para os múltiplos de cinco, imprima "Buzz". Para números que são múltiplos de três e cinco, imprima "Fizzbuzz".
Em seguida, faremos nosso arquivo de configuração de tarefas (isso já é feito para você no task_configs/FizzBuzz.yaml ), mas o guiaremos por isso. Para fazer isso, definiremos uma tarefa de nível superior chamada "Fizzbuzz", dê um rápido e o número de vezes que queremos que ele modelo resolva o 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.Agora, definiremos nosso "agente" - o modelo que atuará como especialista para concluir nossa tarefa. Os modelos podem ser qualquer um dos modelos de Ollama hospedados / locais de suporte (por exemplo, Gemini do Google, GPT-4 do OpenAI ou Mistral da IA da IA via 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 criar um "pós -processador" . Vamos querer apenas o código preenchido pelo agente a ser avaliado, então aqui vamos fazer com que nosso modelo de pós -processador extraia o código -fonte da resposta do 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 fim, você deseja um modelo de "avaliador" que atue como especialista em revisar a saída do agente/pós -processador. O trabalho do avaliador é retornar verdadeiro / falso. Além disso, podemos falhar até 10 vezes -novamente o agente. Aqui está um pouco da magia - incluiremos um breve resumo da tentativa fracassada - uma crítica na próxima consulta ao agente. Isso permite que o agente itera de uma maneira muito mais eficaz . Aqui, queremos que nosso avaliador revise a implementação do 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 trabalho foi inspirado na abordagem FunSearch do Google DeepMind para encontrar uma nova solução para o problema do conjunto de limites. No nível macro, isso foi feito desenvolvendo exemplos baseados em COT (cadeia de pensamento), solicitando repetidamente o PALM2 para gerar grandes quantidades de programas e, em seguida, avaliar esses programas em vários níveis.