----------------------------------------------------
Tworzenie aplikacji asystenta do wyszukiwania wiedzy
----------------------------------------------------

import functions_framework
from openai import OpenAI
from PyPDF2 import PdfReader
import io
import requests

@functions_framework.http
def get_answer_from_pdf(request):
  request_json = request.get_json(silent=True)
  pdf_url = request_json['pdf_url']
  question = request_json['question']

  client = OpenAI(api_key = '<tutaj klucz API>')

  # Wysyłamy żądanie GET pod adres URL
  response = requests.get(pdf_url, stream=True)
  response.raise_for_status() # Sprawdzamy, czy żądanie powiodło się

  # Zapisujemy tekst
  text = ''

  # Tworzymy obiekt do odczytu danych PDF, używając strumienia bajtów z odpowiedzi
  with io.BytesIO(response.content) as pdf_file:
    pdf_reader = PdfReader(pdf_file)
    
    # Iterujemy po kolejnych stronach i wypisujemy tekst
    for page_num in range(len(pdf_reader.pages)):
      page = pdf_reader.pages[0]
      text = text + page.extract_text()

  response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
      {
        "role": "system",
        "content": "Jesteś pomocnym asystentem, który przegląda plik tekstowy i odpowiada na pytania"
      },
      {
        "role": "user",
        "content": '\n\n TEKST: ' + text + ' \n\n PYTANIE: ' + question
      }
    ],
    temperature=0.64,
    max_tokens=1000,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0
  )
  
  answer = response.choices[0].message.content
  result = {
    'answer': answer
  }
  return result

---------------------------------------------

{
    "pdf_url": "https://ftp.helion.pl/przyklady/9788328917583_instrukcja_drona.pdf",
    "question": "dla bezpieczeństwa, jak wysoko można latać dronem?"
}

-------------------------------------------------------------------
Tworzenie asystenta do wyszukiwania wiedzy z użyciem Assistants API
-------------------------------------------------------------------

import functions_framework
import time
from openai import OpenAI

@functions_framework.http
def get_answer(request):

  # Deklarujemy identyfikator asystenta
  assistant_id = '<tutaj-ID-asystenta> '

  # Pobieramy dane wejściowe
  request_json = request.get_json(silent=True)
  question = request_json['question']

  # Inicjalizujemy OpenAI
  client = OpenAI(api_key = '<tutaj-klucz-API>')

  # Tworzymy wątek
  thread = client.beta.threads.create()

  # Tworzymy komunikat pytania w wątku
  message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content=question
    )
  
  # Uruchamiamy asystenta
  run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant_id,
    instructions=""
  )
  
  # Czekamy 30 sekund na odpowiedź
  time.sleep(30)
  
  # Pobieramy odpowiedź
  thread_messages = client.beta.threads.messages.list(thread.id)
  answer = thread_messages.data[0].content[0].text.value
  
  # Zwracamy odpowiedź
  result = {
  'answer': answer
  }
  
  return result

--------------------------------------------------

{
   "question": "Ilu posłów zasiada w parlamencie?"
}

