add exxetaGPT prototyp

pull/40/head
Jaronim Pracht 2025-04-24 08:45:58 +02:00
parent 7cf96232e9
commit 10686bbd98
6 changed files with 499 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,104 @@
{
"Fondsname": {
"value": "Real Estate Prime Europe",
"page_number": 2,
"confidence_level": "high"
},
"Fondsmanager": {
"value": null,
"page_number": null,
"confidence_level": "low"
},
"Name_Kapitalverwaltungsgesellschaft": {
"value": "Real Estate",
"page_number": 5,
"confidence_level": "medium"
},
"Datum": {
"value": "End of December 2018",
"page_number": 12,
"confidence_level": "medium"
},
"Risikoprofil": {
"value": "Core/Core+",
"page_number": 10,
"confidence_level": "high"
},
"Artikel_gem_SFDR": {
"value": null,
"page_number": null,
"confidence_level": "low"
},
"Zielrendite_über_die_Fondslaufzeit": {
"value": "IRR: 6%-7%",
"page_number": 10,
"confidence_level": "high"
},
"Rendite_seit_Auflage": {
"value": "Total return: 5.3%, 16.1%, 13.6%, 8.9%, 12.8% for years 2015-2018",
"page_number": 12,
"confidence_level": "high"
},
"Zielausschüttungsrendite_über_die_Fondslaufzeit": {
"value": "Cash on Cash: 4%-5%",
"page_number": 10,
"confidence_level": "high"
},
"Ausschüttungsrendite_seit_Auflage": {
"value": "Unlevered Cash-on-cash examples: 4.14%, 3.31%",
"page_number": 33,
"confidence_level": "medium"
},
"Laufzeit": {
"value": "Open-ended",
"page_number": 9,
"confidence_level": "high"
},
"LTV_Loan_to_Value": {
"value": "50% max at asset and fund level",
"page_number": 10,
"confidence_level": "high"
},
"Soll_Ist": {
"value": "59.8%",
"page_number": 12,
"confidence_level": "medium"
},
"Ziel": {
"value": "Target 40-45%",
"page_number": 10,
"confidence_level": "high"
},
"Managementgebühren_Bezogen_auf_NAV_Net_Asset_Value": {
"value": "Sliding scale 55-50-40bp x NAV",
"page_number": 10,
"confidence_level": "high"
},
"Sektorenallokation": {
"value": {
"Office": "75.6%",
"Retail": "13.8%",
"Hotels": "4.3%",
"Industrial/logistics": "1.0%",
"Residential": "0.4%",
"Others": "4.9%"
},
"page_number": 5,
"confidence_level": "high"
},
"Länderallokation": {
"value": {
"Germany": null,
"France": null,
"Italy": null,
"Netherlands": null,
"United Kingdom": null,
"Czech Republic": null,
"Luxembourg": null,
"Spain": null,
"Finland": null
},
"page_number": 16,
"confidence_level": "medium"
}
}

View File

@ -0,0 +1,112 @@
{
"details": [
{
"key": "Fondsname",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Fondsmanager",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Name Kapitalverwaltungsgesellschaft",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Datum",
"value": "31 March 2024",
"page": 5,
"confidence": "high"
},
{
"key": "Risikoprofil",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Artikel gem. SFDR",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Zielrendite über die Fondslaufzeit",
"value": "7%+ Net Investors' long-term return",
"page": 1,
"confidence": "high"
},
{
"key": "Rendite seit Auflage",
"value": "+6.0% annualised Total Return",
"page": 27,
"confidence": "high"
},
{
"key": "Zielausschüttungsrendite über die Fondslaufzeit",
"value": "4.0%",
"page": 27,
"confidence": "high"
},
{
"key": "Ausschüttungsrendite seit Auflage",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Laufzeit",
"value": "Open-ended",
"page": 30,
"confidence": "medium"
},
{
"key": "LTV (Loan-to-Value)",
"value": "18.7%",
"page": 16,
"confidence": "high"
},
{
"key": "Soll/Ist",
"value": "Not directly mentioned",
"page": null,
"confidence": "low"
},
{
"key": "Ziel",
"value": "Achieve a resilient income performance and a long-term capital appreciation",
"page": 1,
"confidence": "high"
},
{
"key": "Managementgebühren Bezogen auf NAV (Net Asset Value)",
"value": "Between 70bps and 125bps based on ticket size",
"page": 34,
"confidence": "high"
},
{
"key": "Sektorenallokation",
"value": [
"Office",
"Residential",
"Industrial/Logistics",
"Retail",
"Hotels"
],
"page": 36,
"confidence": "medium"
},
{
"key": "Länderallokation",
"value": ["Europe", "North America", "Asia Pacific"],
"page": 36,
"confidence": "medium"
}
]
}

View File

@ -0,0 +1,106 @@
{
"information": [
{
"key": "Fondsname",
"value": "Europäische Logistikstrategie",
"page_number": 1,
"confidence": "high"
},
{
"key": "Fondsmanager",
"value": "Nicht direkt erwähnter spezifischer Name",
"page_number": 5,
"confidence": "low"
},
{
"key": "Name Kapitalverwaltungsgesellschaft",
"value": "Nicht direkt erwähnt",
"page_number": 5,
"confidence": "low"
},
{
"key": "Datum",
"value": "30.06.2023",
"page_number": 12,
"confidence": "high"
},
{
"key": "Risikoprofil",
"value": "Halten-Strategie",
"page_number": 2,
"confidence": "high"
},
{
"key": "Artikel gem. SFDR",
"value": "Artikel 8",
"page_number": 8,
"confidence": "high"
},
{
"key": "Zielrendite über die Fondslaufzeit",
"value": "5,00-5,25%",
"page_number": 2,
"confidence": "high"
},
{
"key": "Rendite seit Auflage",
"value": "Nicht direkt erwähnt",
"page_number": null,
"confidence": "low"
},
{
"key": "Zielausschüttungsrendite über die Fondslaufzeit",
"value": "5,00-5,25%",
"page_number": 6,
"confidence": "high"
},
{
"key": "Ausschüttungsrendite seit Auflage",
"value": "Nicht direkt erwähnt",
"page_number": null,
"confidence": "low"
},
{
"key": "Laufzeit",
"value": "Auf Basis langfristiger Strategien und Verträge",
"page_number": 2,
"confidence": "medium"
},
{
"key": "LTV (Loan-to-Value)",
"value": "25-40%",
"page_number": 2,
"confidence": "high"
},
{
"key": "Soll/Ist",
"value": "Nicht direkt erwähnt",
"page_number": null,
"confidence": "low"
},
{
"key": "Ziel",
"value": "Langfristiges Halten und Management von Core+ Logistikimmobilien",
"page_number": 2,
"confidence": "medium"
},
{
"key": "Managementgebühren Bezogen auf NAV (Net Asset Value)",
"value": "60 bps p.a.",
"page_number": 26,
"confidence": "high"
},
{
"key": "Sektorenallokation",
"value": "Logistikimmobilien",
"page_number": 5,
"confidence": "high"
},
{
"key": "Länderallokation",
"value": "Niederlande, Frankreich, Skandinavien, Deutschland",
"page_number": 2,
"confidence": "high"
}
]
}

View File

@ -0,0 +1,106 @@
{
"extracted_information": [
{
"key": "Fondsname",
"value": "Core Plus Open-ended Fund",
"page_number": 2,
"confidence_level": "high"
},
{
"key": "Fondsmanager",
"value": "Specialist Nordic Manager",
"page_number": 2,
"confidence_level": "medium"
},
{
"key": "Name Kapitalverwaltungsgesellschaft",
"value": "Capital Management is an AIFM supervised by the CSSF in Luxembourg",
"page_number": 36,
"confidence_level": "high"
},
{
"key": "Datum",
"value": "August 2024",
"page_number": 0,
"confidence_level": "high"
},
{
"key": "Risikoprofil",
"value": "Prioritizing assets where strong growth is expected over the next decade",
"page_number": 2,
"confidence_level": "medium"
},
{
"key": "Artikel gem. SFDR",
"value": "Article 8 of the Sustainable Financial Disclosure Regulation (SFDR)",
"page_number": 16,
"confidence_level": "high"
},
{
"key": "Zielrendite über die Fondslaufzeit",
"value": "7-8% net total annual return",
"page_number": 2,
"confidence_level": "high"
},
{
"key": "Rendite seit Auflage",
"value": "Realized Gross IRR® (Max)",
"page_number": 5,
"confidence_level": "medium"
},
{
"key": "Zielausschüttungsrendite über die Fondslaufzeit",
"value": "3-4% dividend yield",
"page_number": 2,
"confidence_level": "high"
},
{
"key": "Ausschüttungsrendite seit Auflage",
"value": "NA (specific historical payout not provided)",
"page_number": null,
"confidence_level": "low"
},
{
"key": "Laufzeit",
"value": "Open-ended with an initial 24-month lock-in for new investors",
"page_number": 36,
"confidence_level": "high"
},
{
"key": "LTV (Loan-to-Value)",
"value": "Target LTV of 35% (capped at 37.5%)",
"page_number": 11,
"confidence_level": "high"
},
{
"key": "Soll/Ist",
"value": "Estimated CAPEX / Current Yield and Occupancy",
"page_number": 28,
"confidence_level": "medium"
},
{
"key": "Ziel",
"value": "Targeting properties that are comparatively sustainable and aligned with EU Taxonomy",
"page_number": 11,
"confidence_level": "high"
},
{
"key": "Managementgebühren Bezogen auf NAV (Net Asset Value)",
"value": "Management fee of 85 bps on NAV",
"page_number": 36,
"confidence_level": "high"
},
{
"key": "Sektorenallokation",
"value": "Logistics, Residential, Office",
"page_number": 12,
"confidence_level": "high"
},
{
"key": "Länderallokation",
"value": "Sweden, Norway, Denmark, Finland",
"page_number": 12,
"confidence_level": "high"
}
]
}

View File

@ -0,0 +1,71 @@
import fitz # PyMuPDF
from dotenv import load_dotenv
import os
from openai import AzureOpenAI
load_dotenv()
BASE_URL = "https://ai.exxeta.com/api/v2/azure/openai"
API_KEY = os.getenv("OPENAI_API_KEY")
def extract_text_from_pdf(pdf_path):
# Open the PDF file
doc = fitz.open(pdf_path)
# Initialize a variable to store the extracted text
extracted_text = ""
# Iterate through each page
for page_num in range(len(doc)):
page = doc.load_page(page_num) # Load the page
text = page.get_text() # Extract text from the page
extracted_text += "[Page " + str(page_num) + "]\n" + text + "\n"
return extracted_text
# Example usage
pdf_document = "../../pitch-books/Teaser 2 FINAL.pdf"
# pdf_document = "../../pitch-books/Pitchbook 4.pdf"
text = extract_text_from_pdf(pdf_document)
print(text)
client = AzureOpenAI(api_key=API_KEY, base_url=BASE_URL, api_version="2023-07-01-preview")
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant that always responds in JSON format. Your responses should be valid JSON objects without any explanatory text outside the JSON structure. Structure your answers appropriately with keys and values relevant to the user's query."},
{"role": "user", "content": """
Extract from the text the following information:
- Fondsname
- Fondsmanager
- Name Kapitalverwaltungsgesellschaft
- Datum
- Risikoprofil
- Artikel gem. SFDR
- Zielrendite über die Fondslaufzeit
- Rendite seit Auflage
- Zielausschüttungsrendite über die Fondslaufzeit
- Ausschüttungsrendite seit Auflage
- Laufzeit
- LTV (Loan-to-Value)
- Soll/Ist
- Ziel
- Managementgebühren Bezogen auf NAV (Net Asset Value)
- Sektorenallokation
- Länderallokation
for each value in the list:
- the key
- the value
- the page number
- theconfidence level (high/medium/low)(that the value is correct)
TEXT TO ANALYZE:
""" + text + """
"""},
],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)