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

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.