CCCPaste

parsowanie_JSON

from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
from pprint import pprint
import pandas as pd
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

model = ChatOpenAI(temperature=0)

text = """Anna Wojciechowska, autorka książki pt. 'Światło za horyzontem, wydanej w 2024 roku spotka się z czytelnikami na Trgach Książki. Książka będzie kosztować 39,99 zł. Książka ma miękką okładkę.

W świecie zdominowanym przez technologie, gdzie ludzkość nie zna już granic w zdobywaniu nowych terenów, młoda naukowiec, Lena Kowalska, staje przed wyzwaniem, które może zmienić bieg historii. 
Z dala od wielkich miast i hałaśliwych metropolii, w małej, zapomnianej stacji badawczej na Antarktydzie, dokonuje odkrycia, które ma szansę zrewolucjonizować pojęcie życia na Ziemi.
Lena trafia na tajemniczy artefakt zakopany głęboko pod lodem. Na początku wydaje się on niegroźnym przedmiotem pochodzenia naturalnego, jednak dalsze badania ujawniają, że jest to fragment obcej technologii, która nie powinna istnieć. 
Światło emitowane przez artefakt ma zdolność do manipulowania czasem i przestrzenią. Razem z zespołem innych naukowców, Lena rozpoczyna wyścig z czasem, próbując zrozumieć źródło tej mocy i jej potencjalne konsekwencje dla świata.
W miarę jak badania postępują, Lena odkrywa, że tajemnica artefaktu nie jest jedynym problemem, z którym musi się zmierzyć. Szybko orientuje się, że nie jest jedyną osobą, która zdaje sobie sprawę z istnienia tego niezwykłego odkrycia. 
Międzynarodowe korporacje oraz tajemnicze grupy, o których istnieniu nie miała pojęcia, rozpoczynają własne działania, starając się przejąć kontrolę nad artefaktem. 
Lena musi stanąć przed moralnymi dylematami — czy należy odkryć tę technologię światu, czy lepiej ukryć ją, by uniknąć katastrofalnych skutków?
W Świetle za horyzontem Anna Wojciechowska zadaje czytelnikom pytania o granice ludzkiej ambicji, odpowiedzialność za odkrycia naukowe i niebezpieczeństwa wynikające z niekontrolowanego postępu technologicznego. 
To trzymająca w napięciu powieść, która łączy elementy thrillera, science fiction i filozoficznych rozważań o przyszłości ludzkości. 
Autorka doskonale balansuje między dynamiką akcji a głębokimi refleksjami, zapraszając czytelnika do zadania sobie pytania: czy jesteśmy gotowi na to, co może kryć się za horyzontem naszej wiedzy?
W tej pełnej napięcia i zwrotów akcji książce, nie tylko technologia, ale i ludzkie pragnienia oraz lęki stają się siłami napędzającymi wydarzenia, których konsekwencje mogą wykraczać poza naszą planetę.
"""

# Define your desired data structure.
class Book(BaseModel):
    autor: str = Field(description="imię i nazwisko autora książki")
    tytul: str = Field(description="tytuł książki")
    rok_wydania: int = Field(description="rok wydania książki")
    cena: float = Field(description="cena książki")
    rodzaj_okladki: str = Field(description="rodzaj okładki książki")


# And a query intented to prompt a language model to populate the data structure.
book_query = f"Na podstawie tekstu {text} podaj dane o książce."

# Set up a parser + inject instructions into the prompt template.
parser = JsonOutputParser(pydantic_object=Book)

prompt = PromptTemplate(
    template="Wykonaj instrukcję uzytkownika.\n{format_instructions}\n{query}\n",
    input_variables=["query"],
    partial_variables={"format_instructions": parser.get_format_instructions()},
)

chain = prompt | model | parser

# add the book description to the input dictionary
output = chain.invoke({"query": book_query})
print("\n\n Wynik parsowania tekstu: \n")
pprint(output, indent=2)
output["opis"] = text

# convert the dictionary to a pandas dataframe
df = pd.DataFrame(output, index=[0])
print(f"\n\n Tabela z kolumnami {df.columns}:\n")
print(df)

## Wynik działania kodu - tabela
"""
 Wynik parsowania tekstu: 

{ 'autor': 'Anna Wojciechowska',
  'cena': 39.99,
  'rodzaj_okladki': 'Miękka',
  'rok_wydania': 2024,
  'tytul': 'Światło za horyzontem'}


 Tabela z kolumnami Index(['autor', 'tytul', 'rok_wydania', 'cena', 'rodzaj_okladki', 'opis'], dtype='object'):

                autor                  tytul  rok_wydania   cena rodzaj_okladki                                               opis
0  Anna Wojciechowska  Światło za horyzontem         2024  39.99         Miękka  Autor: Anna Wojciechowska\nTytuł: Światło za h...
"""