Advertisement
Guest User

Untitled

a guest
Dec 14th, 2023
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.05 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3.  
  4. import requests
  5.  
  6.  
  7. import cfg
  8.  
  9.  
  10. API_KEY = cfg.gemini_key
  11.  
  12.  
  13. # не принимать запросы больше чем
  14. MAX_REQUEST = 14000
  15.  
  16.  
  17. # хранилище диалогов {id:list(mem)}
  18. CHATS = {}
  19.  
  20.  
  21. def ai(q: str, mem) -> str:
  22.     """
  23.    Generate the response of an AI model based on a given question and memory.
  24.  
  25.    Parameters:
  26.    - q (str): The question to be passed to the AI model.
  27.    - mem: The memory of the AI model which contains previous interactions.
  28.  
  29.    Returns:
  30.    - str: The response generated by the AI model based on the given question and memory.
  31.    """
  32.     url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=" + API_KEY
  33.  
  34.     mem_ = {"contents": mem + [{"role": "user", "parts": [{"text": q}]}]}
  35.  
  36.     response = requests.post(url, json=mem_, timeout=60)
  37.  
  38.     try:
  39.         resp = response.json()['candidates'][0]['content']['parts'][0]['text']
  40.     except Exception as ai_error:
  41.         resp = 'Gemini didnt respond'
  42.         # print(ai_error)
  43.  
  44.     if resp:
  45.         mem.append({"role": "user", "parts": [{"text": q}]})
  46.         mem.append({"role": "model", "parts": [{"text": resp}]})
  47.         size = 0
  48.         for x in mem:
  49.             text = x['parts'][0]['text']
  50.             size += len(text)
  51.         while size > 25000:
  52.             mem = mem[2:]
  53.  
  54.     return resp
  55.  
  56.  
  57. def chat(query: str, id: str) -> str:
  58.     """
  59.    A function that handles chat queries.
  60.  
  61.    Args:
  62.        query (str): The query string.
  63.        id (str): The ID of the chat.
  64.  
  65.    Returns:
  66.        str: The response from the AI.
  67.    """
  68.     if id not in CHATS:
  69.         CHATS[id] = []
  70.     mem = CHATS[id]
  71.     return ai(query, mem)
  72.  
  73.  
  74. def reset(id: str):
  75.     """
  76.    Resets the chat history for the given ID.
  77.  
  78.    Parameters:
  79.        id (str): The ID of the chat to reset.
  80.  
  81.    Returns:
  82.        None
  83.    """
  84.     CHATS[id] = []
  85.  
  86.  
  87. if __name__ == '__main__':
  88.     mem = []
  89.  
  90.     while 1:
  91.         q = input('>')
  92.         r = chat(q, 'test')
  93.         print(r)
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement