Advertisement
jarekmor

parsowanie_JSON

Oct 13th, 2024 (edited)
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.67 KB | None | 0 0
  1. from dotenv import find_dotenv, load_dotenv
  2. load_dotenv(find_dotenv())
  3. from pprint import pprint
  4. import pandas as pd
  5. from langchain_core.output_parsers import JsonOutputParser
  6. from langchain_core.prompts import PromptTemplate
  7. from langchain_openai import ChatOpenAI
  8. from pydantic import BaseModel, Field
  9.  
  10. OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
  11.  
  12. model = ChatOpenAI(temperature=0)
  13.  
  14. 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ę.
  15.  
  16. 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.
  17. 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.
  18. 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ć.
  19. Ś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.
  20. 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.
  21. 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.
  22. Lena musi stanąć przed moralnymi dylematami — czy należy odkryć tę technologię światu, czy lepiej ukryć ją, by uniknąć katastrofalnych skutków?
  23. 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.
  24. To trzymająca w napięciu powieść, która łączy elementy thrillera, science fiction i filozoficznych rozważań o przyszłości ludzkości.
  25. 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?
  26. 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ę.
  27. """
  28.  
  29. # Define your desired data structure.
  30. class Book(BaseModel):
  31.     autor: str = Field(description="imię i nazwisko autora książki")
  32.     tytul: str = Field(description="tytuł książki")
  33.     rok_wydania: int = Field(description="rok wydania książki")
  34.     cena: float = Field(description="cena książki")
  35.     rodzaj_okladki: str = Field(description="rodzaj okładki książki")
  36.  
  37.  
  38. # And a query intented to prompt a language model to populate the data structure.
  39. book_query = f"Na podstawie tekstu {text} podaj dane o książce."
  40.  
  41. # Set up a parser + inject instructions into the prompt template.
  42. parser = JsonOutputParser(pydantic_object=Book)
  43.  
  44. prompt = PromptTemplate(
  45.     template="Wykonaj instrukcję uzytkownika.\n{format_instructions}\n{query}\n",
  46.     input_variables=["query"],
  47.     partial_variables={"format_instructions": parser.get_format_instructions()},
  48. )
  49.  
  50. chain = prompt | model | parser
  51.  
  52. # add the book description to the input dictionary
  53. output = chain.invoke({"query": book_query})
  54. print("\n\n Wynik parsowania tekstu: \n")
  55. pprint(output, indent=2)
  56. output["opis"] = text
  57.  
  58. # convert the dictionary to a pandas dataframe
  59. df = pd.DataFrame(output, index=[0])
  60. print(f"\n\n Tabela z kolumnami {df.columns}:\n")
  61. print(df)
  62.  
  63. ## Wynik działania kodu - tabela
  64. """
  65. Wynik parsowania tekstu:
  66.  
  67. { 'autor': 'Anna Wojciechowska',
  68.  'cena': 39.99,
  69.  'rodzaj_okladki': 'Miękka',
  70.  'rok_wydania': 2024,
  71.  'tytul': 'Światło za horyzontem'}
  72.  
  73.  
  74. Tabela z kolumnami Index(['autor', 'tytul', 'rok_wydania', 'cena', 'rodzaj_okladki', 'opis'], dtype='object'):
  75.  
  76.                autor                  tytul  rok_wydania   cena rodzaj_okladki                                               opis
  77. 0  Anna Wojciechowska  Światło za horyzontem         2024  39.99         Miękka  Autor: Anna Wojciechowska\nTytuł: Światło za h...
  78. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement