import requests
import json
import openai
import random

# Configurații OpenAI
openai.api_base = "http://localhost:4891/v1"
openai.api_key = "not needed for a local LLM"
model_openai = "GPT4All Falcon"

# Configurații LLaMA
url_llama = "http://localhost:11434/api/generate"
headers_llama = {"Content-Type": "application/json"}

def get_response_from_openai(prompt):
    temperature_random = round(random.uniform(0, 1), 2)
    max_tokens_random = random.randint(100, 200)

    response = openai.Completion.create(
        model=model_openai,
        prompt=prompt,
        max_tokens=max_tokens_random,
        temperature=temperature_random,
        top_p=0.95,
        n=1,
        echo=True,
        stream=False
    )
    return response.choices[0].text.strip()

def get_response_from_llama(prompt):
    payload = json.dumps({
        "model": "llama2-uncensored",
        "prompt": prompt
    })
    response = requests.post(url_llama, data=payload, headers=headers_llama)
    if response.status_code == 200:
        full_response = ""
        for line in response.text.splitlines():
            try:
                line_data = json.loads(line)
                full_response += line_data.get("response", "")
            except json.JSONDecodeError as e:
                print(f"Eroare la decodarea liniei JSON: {e}")
        return full_response.strip()
    else:
        print("A apărut o eroare:", response.status_code)
        return None

def ask_question_interactive():
    initial_question = input("Scrie o întrebare inițială: ")
    num_cycles = int(input("Câte cicluri să facă între modele? (introduceți un număr): "))
    current_prompt = initial_question
    discussion_log = f"Întrebarea inițială: {initial_question}\n\n"

    for cycle in range(num_cycles):
        print(f"\nCiclu {cycle + 1}")
        openai_response = get_response_from_openai(current_prompt)
        print("Răspuns de la OpenAI:", openai_response)
        
        discussion_log += f"Ciclu {cycle + 1} - Răspuns de la OpenAI: {openai_response}\n"
        
        llama_response = get_response_from_llama(openai_response)
        if llama_response:
            print("Răspuns de la LLaMA:", llama_response)
            discussion_log += f"Ciclu {cycle + 1} - Răspuns de la LLaMA: {llama_response}\n"
            current_prompt = f"{initial_question} Având în vedere discuția anterioară, {llama_response}"

    # Scrierea discuției într-un fișier txt
    with open("discutia_din_cicluri.txt", "w", encoding="utf-8") as file:
        file.write(discussion_log)

    print("\nDiscuția a fost salvată în 'discutia_din_cicluri.txt'.")

if __name__ == "__main__":
    ask_question_interactive()
