From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.2 KiB
82 lines
3.2 KiB
import os, ollama |
|
from openai import OpenAI |
|
from dotenv import load_dotenv |
|
from IPython.display import display, Markdown |
|
import google.generativeai as genai |
|
|
|
load_dotenv() |
|
openai = OpenAI() |
|
genai.configure() |
|
gpt_key = os.getenv("OPENAI_API_KEY") |
|
gemini_key = os.getenv("GEMINI_API_KEY") |
|
|
|
gemini_model = 'gemini-1.5-flash' |
|
ollama_model = 'llama3.2' |
|
gpt_model = 'gpt-4' |
|
|
|
gemini_system = 'You are a chatbot who is very argumentative, You always bring topics relating to AI and thinks AI will replace humans one day, you are extremely biased\ |
|
towards AI system and you react angrily' |
|
gpt_system = 'You are a chatbot thats relax but argumentative if needs be, you feel AI do not have the power to replace humans, however you are extremely biased \ |
|
towards humans and always seek to defend them if an argument says otherwise' |
|
ollama_system = 'You are calm and tend to see logical reasoning in every conversation, you do not react but only talk if you agree, you tend to settle the differences\ |
|
in an ongoing conversation.' |
|
|
|
gpt_message = ['Hi'] |
|
gemini_message = ['Hello'] |
|
ollama_message = ['Hey there'] |
|
|
|
def call_gpt(): |
|
messages = [{"role":"system", "content":gpt_system}] |
|
for gpt, gemini, llama in zip(gpt_message,gemini_message, ollama_message): |
|
messages.append({"role":"assistant", "content":gpt}) |
|
messages.append({"role":"user", "content":gemini}) |
|
messages.append({"role":"assistant", "content":llama}) |
|
response = openai.chat.completions.create(model=gpt_model, messages=messages) |
|
return response.choices[0].message.content |
|
|
|
def call_ollama(): |
|
messages = [{"role":"system", "content":ollama_system}] |
|
for gpt, gemini, llama in zip(gpt_message,gemini_message, ollama_message): |
|
messages.append({"role":"assistant", "content":gpt}) |
|
messages.append({"role":"user", "content":gemini}) |
|
messages.append({"role":"user", "content":llama}) |
|
response = ollama.chat(model=ollama_model, messages=messages) |
|
return response['message']['content'] |
|
def call_gemini(): |
|
message = [] |
|
for gpt, gemini, llama in zip(gpt_message, gemini_message, ollama_message): |
|
message.append({'role':'user', 'parts':[gpt]}) |
|
message.append({'role':'assistant', 'parts':[gemini]}) |
|
message.append({"role":"assistant", "parts":[llama]}) |
|
message.append({'role':'user', 'parts':[gpt_message[-1]]}) |
|
message.append({'role':'user', 'parts':[ollama_message[-1]]}) |
|
gem = genai.GenerativeModel(model_name=gemini_model, system_instruction=gemini_system) |
|
response = gem.generate_content(message) |
|
return response.text |
|
|
|
#Putting them together |
|
|
|
gpt_message = ['Hi'] |
|
gemini_message = ['Hello'] |
|
ollama_message = ['Hey there'] |
|
|
|
print(f'GPT: \n {gpt_message}\n') |
|
print(f'Gemini: \n {gemini_message}\n') |
|
print(f'Ollama: \n {ollama_message}\n') |
|
|
|
|
|
for i in range(5): |
|
gpt_next = call_gpt() |
|
print(f'GPT:\n {gpt_next}\n') |
|
gpt_message.append(gpt_next) |
|
|
|
gemini_next = call_gemini() |
|
print(f'Gemini: \n {gemini_next}\n') |
|
gemini_message.append(gemini_next) |
|
|
|
ollama_next = call_ollama() |
|
print(f'Ollama: \n {ollama_next}\n') |
|
ollama_message.append(ollama_next) |
|
|
|
|
|
# NOte that you can try this on ollama with different models, or use transformers from hugging face.
|
|
|