Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from dotenv import load_dotenv
- from langchain_core.output_parsers import JsonOutputParser
- from langchain_core.prompts import PromptTemplate
- from langchain_openai import ChatOpenAI
- from pydantic import BaseModel, Field
- load_dotenv()
- # Define your desired data structure.
- class Oferta(BaseModel):
- apartment_number: str = Field(description="Apartment number, format similar to '7-13-B074'")
- floor: int = Field(description="Floor number where the apartment is located")
- building_number: int = Field(description="Building number in the development project")
- developer: str = Field(description="Name of the developer")
- location: str = Field(description="General location or address of the development")
- amenities: list[str] = Field(description="List of amenities available in the development, e.g., playgrounds, gym, picnic areas")
- public_transport: str = Field(description="Proximity to public transportation, such as bus stops or train stations")
- price: float = Field(description="Total price of the apartment in PLN")
- price_per_sqm: float = Field(description="Price per square meter of the apartment in PLN")
- full_address: str = Field(description="Full address including street, district, city, and region")
- additional_info: str = Field(description="Additional information about the development, such as surrounding attractions or points of interest")
- # And a query intended to prompt a language model to populate the data structure.
- description_query = """Extract key information about the real estate offer:
- Opis:
- 3-pokojowe mieszkanie numer 7-13-B074 na 4. piętrze w budynku 13 w Inwestycji Miasto Moje Dewelopera RONSON DEVELOPMENT
- Zatoka Relaksu: hamaki, leżaki, strefa piknikowa z grillem
- Zatoka Kultury: kino letnie, amfiteatr
- Zatoka Aktywności: siłownia plenerowa, ścieżka rekreacyjna
- Zatoka Zabawy: 12 placów zabaw i plac gier
- Pasaż handlowy, restauracje i kawiarnie na terenie osiedla
- Stacja SKM "Warszawa Żerań" (14 minut spacerem)
- Przystanek autobusowy (1 minuta spacerem)
- Miasto Moje - poznaj inwestycję
- Inwestycja Miasto Moje to samowystarczalne osiedle zlokalizowane na Białołęce przy ulicy Marywilskiej. Mieszkania dostępne w ofercie mają zróżnicowane metraże oraz komfortowe przestrzenie dodatkowe takie jak loggie, balkony, tarasy i ogródki oraz posiadają możliwość wykończenia pod klucz, co z pewnością będzie wygodne dla wielu zabieganych właścicieli.
- Miasto Moje to miejsce wyjątkowe ze względu na zaaranżowaną przestrzeń wspólną dla mieszkańców, w której znajdą się całoroczne, funkcjonalne atrakcje. Na terenie inwestycji usytuowano Pasaż Wisła z dostępnymi punktami usługowymi takimi jak restauracje czy kawiarnie oraz zatoki, czyli strefy skupiające się na konkretnych aktywnościach.
- Zatoka relaksu to miejsce dedykowane sąsiedzkiej integracji, w czym sprzyja strefa z grillem, plac miejski, ścieżka rekreacyjna i wygodne leżaki oraz hamaki. Zatoka zabawy wyróżnia się licznymi miejscami do pobudzania wyobraźni – zrealizowano tam liczne place zabaw, place gier, żłobek, tematyczne przedszkole, trampoliny, statek piracki, piaskownice i fontanny w zielonym otoczeniu.
- Zatoka aktywności to miejsce dla osób z zamiłowaniem do sportu, zaprojektowano w niej mi.in. siłownie plenerowe, wielofunkcyjne boisko i obszary sprzyjające gimnastyce i joggingowi. Zatoka kultury sprawdzi się dla każdego, kto ceni letnie kino, literaturę, czy amfiteatr. Dla entuzjastów klimatycznych świąt przygotowano również plac świąteczny z ogromną choinką.
- Miasto Moje poza świetnie zaaranżowanymi terenami osiedla, wyróżnia się także komfortową lokalizacją, która zapewnia łatwy dojazd do centrum.
- Miasto Moje - lokalizacja
- W pobliżu stacji SKM "Warszawa Żerań",
- ul. Marywilska 60
- 10,1 km do centrum
- 2 min. spacerem do przystanku autobusowego
- 9 min. spacerem do stacji kolejowej
- 9 min. spacerem do stacji SKM
- dojazd do centrum: 19 min samochodem
- Istotne punkty w okolicy inwestycji
- Przystanek autobusowy (110 m, 2 minuty spacerem)
- Piekarnia (166 m, 3 minuty spacerem)
- Sklep: Żabka (189 m, 3 minuty spacerem)
- Sklep: Carrefour (230 m, 3 minuty spacerem)
- Restauracja (673 m, 9 minut spacerem)
- Stacja kolejowa (687 m, 9 minut spacerem)
- Stacja SKM (687 m, 9 minut spacerem)
- Cena nieruchmości wynosi 771 840 zł, czyli 12 918 zł/m².
- Mieszkanie zlokalizowane jest przy ul. Marywilska 60, w dzielnicy Żerań na Białołęce w Warszawie."""
- # Set up a parser + inject instructions into the prompt template.
- parser = JsonOutputParser(pydantic_object=Oferta)
- prompt = PromptTemplate(
- template="Answer the user query by extracting entities from the description and populating the data structure.\n{format_instructions}\n{query}\n",
- input_variables=["query"],
- partial_variables={"format_instructions": parser.get_format_instructions()},
- )
- # Set up the model
- model = ChatOpenAI(model="gpt-4o-mini")
- # Chain the components: prompt, model, and parser
- chain = prompt | model | parser
- # Invoke the chain with the provided description
- oferta_json_output = chain.invoke({"query": description_query})
- def prepare_email(oferta_data):
- # Extract data from the JSON output
- apartment_number = oferta_data.get('apartment_number', 'N/A')
- floor = oferta_data.get('floor', 'N/A')
- building_number = oferta_data.get('building_number', 'N/A')
- developer = oferta_data.get('developer', 'N/A')
- location = oferta_data.get('location', 'N/A')
- amenities = ", ".join(oferta_data.get('amenities', []))
- public_transport = oferta_data.get('public_transport', 'N/A')
- price = oferta_data.get('price', 'N/A')
- price_per_sqm = oferta_data.get('price_per_sqm', 'N/A')
- full_address = oferta_data.get('full_address', 'N/A')
- additional_info = oferta_data.get('additional_info', 'N/A')
- # Format the email content
- email_content = f"""
- Dear Customer,
- We are pleased to introduce you to an exceptional real estate offer in our latest development, {developer}.
- The apartment details are as follows:
- - Apartment Number: {apartment_number}
- - Located on Floor: {floor}, in Building: {building_number}
- - Full Address: {full_address}
- - Price: {price} PLN (equivalent to {price_per_sqm} PLN per square meter)
- This apartment is part of the '{location}' project, which offers a range of outstanding amenities for your convenience and enjoyment.
- Some of the key features include:
- {amenities}
- The project also boasts excellent public transportation options with {public_transport}, ensuring easy access to and from the city center.
- Additional information:
- {additional_info}
- We believe this property offers a unique opportunity for you to enjoy comfortable and modern living in a well-connected and vibrant neighborhood.
- If you are interested or have any further questions, please do not hesitate to contact us. We would be more than happy to provide additional information or arrange a visit.
- Best regards,
- [Your Name]
- Sales Department
- {developer}
- """
- return email_content
- # Prepare the email
- email = prepare_email(oferta_json_output)
- print(email)
- ############################## email do klienta ############################
- email = """Dear Customer,
- We are pleased to introduce you to an exceptional real estate offer in our latest development, RONSON DEVELOPMENT.
- The apartment details are as follows:
- - Apartment Number: 7-13-B074
- - Located on Floor: 4, in Building: 13
- - Full Address: ul. Marywilska 60, Żerań, Białołęka, Warszawa
- - Price: 771840 PLN (equivalent to 12918 PLN per square meter)
- This apartment is part of the 'Białołęka, ul. Marywilska 60, Warszawa' project, which offers a range of outstanding amenities for your convenience and enjoyment.
- Some of the key features include:
- hamaki, leżaki, strefa piknikowa z grillem, kino letnie, amfiteatr, siłownia plenerowa, ścieżka rekreacyjna, 12 placów zabaw, plac gier, pasaż handlowy, restauracje, kawiarnie
- The project also boasts excellent public transportation options with Stacja SKM 'Warszawa Żerań' (14 minut spacerem), Przystanek autobusowy (1 minuta spacerem), ensuring easy access to and from the city center.
- Additional information:
- Miasto Moje to samowystarczalne osiedle z miejscami do integracji, sportu i kultury, blisko centrum Warszawy.
- We believe this property offers a unique opportunity for you to enjoy comfortable and modern living in a well-connected and vibrant neighborhood.
- If you are interested or have any further questions, please do not hesitate to contact us. We would be more than happy to provide additional information or arrange a visit.
- Best regards,
- [Your Name]
- Sales Department
- RONSON DEVELOPMENT"""
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement