Kamervragen Implemented
Browse files
app.py
CHANGED
@@ -8,12 +8,99 @@ import tkapi
|
|
8 |
from tkapi.fractie import Fractie, FractieFilter
|
9 |
from tkapi.persoon import PersoonFilter, PersoonNevenfunctie
|
10 |
from tkapi.util import queries
|
|
|
11 |
from tools.final_answer import FinalAnswerTool
|
12 |
|
13 |
from Gradio_UI import GradioUI
|
14 |
|
15 |
api = tkapi.TKApi()
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
@tool
|
18 |
def get_kamerlid_reizen(achternaam: str) -> List[Dict[str, str]]:
|
19 |
"""
|
@@ -361,7 +448,13 @@ with open("prompts.yaml", 'r') as stream:
|
|
361 |
|
362 |
agent = CodeAgent(
|
363 |
model=model,
|
364 |
-
tools=[final_answer,
|
|
|
|
|
|
|
|
|
|
|
|
|
365 |
max_steps=6,
|
366 |
verbosity_level=1,
|
367 |
grammar=None,
|
|
|
8 |
from tkapi.fractie import Fractie, FractieFilter
|
9 |
from tkapi.persoon import PersoonFilter, PersoonNevenfunctie
|
10 |
from tkapi.util import queries
|
11 |
+
from tkapi.zaak import Zaak, ZaakSoort
|
12 |
from tools.final_answer import FinalAnswerTool
|
13 |
|
14 |
from Gradio_UI import GradioUI
|
15 |
|
16 |
api = tkapi.TKApi()
|
17 |
|
18 |
+
@tool
|
19 |
+
def get_kamervragen(
|
20 |
+
start_datetime: datetime.datetime,
|
21 |
+
end_datetime: datetime.datetime,
|
22 |
+
only_answered: Optional[bool] = None,
|
23 |
+
zaak_soort: ZaakSoort = ZaakSoort.SCHRIFTELIJKE_VRAGEN
|
24 |
+
) -> List[Dict[str, any]]:
|
25 |
+
"""
|
26 |
+
Retrieves basic information about parliamentary items (kamervragen, moties, etc.) within a specified date range.
|
27 |
+
|
28 |
+
Args:
|
29 |
+
start_datetime: Start date as datetime object
|
30 |
+
end_datetime: End date as datetime object
|
31 |
+
only_answered: Optional filter for answered items (True = only answered, False = only unanswered, None = both)
|
32 |
+
zaak_soort: Type of parliamentary item to filter on. Options from ZaakSoort enum:
|
33 |
+
- AMENDEMENT: Amendments
|
34 |
+
- BRIEF_COMMISSIE: Committee letters
|
35 |
+
- BRIEF_REGERING: Government letters
|
36 |
+
- BRIEF_LID: Member letters
|
37 |
+
- INITIATIEF_NOTA: Initiative notes
|
38 |
+
- INITIATIEF_WETGEVING: Initiative legislation
|
39 |
+
- INTERPELLATIE: Interpellations
|
40 |
+
- LIJST_MET_VRAGEN: List of questions
|
41 |
+
- MEDEDELINGEN: Announcements
|
42 |
+
- MONDELINGE_VRAGEN: Oral questions
|
43 |
+
- MOTIE: Motions
|
44 |
+
- OVERIG: Other
|
45 |
+
- PARLEMENTAIR_DOCUMENT: Parliamentary documents
|
46 |
+
- RAPPORT: Reports
|
47 |
+
- SCHRIFTELIJKE_VRAGEN: Written questions (default)
|
48 |
+
- VERSLAG_COMMISSIE: Committee reports
|
49 |
+
- VOORDRACHT: Nominations
|
50 |
+
- WETSVOORSTEL: Bill proposals
|
51 |
+
|
52 |
+
Returns:
|
53 |
+
List[Dict[str, any]]: List of dictionaries containing basic item information:
|
54 |
+
- 'nummer': Unique identifier of the item
|
55 |
+
- 'soort': Type of the item
|
56 |
+
- 'onderwerp': Subject/topic of the item
|
57 |
+
- 'datum': Date the item was started (as datetime.date)
|
58 |
+
- 'afgedaan': Boolean indicating if the item has been handled/answered
|
59 |
+
|
60 |
+
Example return value:
|
61 |
+
[
|
62 |
+
{
|
63 |
+
'nummer': '2024Z00541',
|
64 |
+
'soort': 'Motie',
|
65 |
+
'onderwerp': 'Motie van de leden over uitingen van de schutterijcultuur',
|
66 |
+
'datum': datetime.date(2024, 1, 18),
|
67 |
+
'afgedaan': True
|
68 |
+
}
|
69 |
+
]
|
70 |
+
"""
|
71 |
+
try:
|
72 |
+
# Initialize API
|
73 |
+
api = TKApi(verbose=False)
|
74 |
+
|
75 |
+
# Create filter
|
76 |
+
filter = Zaak.create_filter()
|
77 |
+
filter.filter_soort(zaak_soort)
|
78 |
+
filter.filter_date_range(start_datetime, end_datetime)
|
79 |
+
|
80 |
+
if only_answered is not None:
|
81 |
+
filter.filter_afgedaan(only_answered)
|
82 |
+
|
83 |
+
# Get items
|
84 |
+
zaken = api.get_zaken(filter=filter)
|
85 |
+
|
86 |
+
# Format results
|
87 |
+
results = []
|
88 |
+
for zaak in zaken:
|
89 |
+
zaak_info = {
|
90 |
+
'nummer': zaak.nummer,
|
91 |
+
'soort': zaak.soort.value if zaak.soort else None,
|
92 |
+
'onderwerp': zaak.onderwerp,
|
93 |
+
'datum': zaak.gestart_op,
|
94 |
+
'afgedaan': zaak.afgedaan
|
95 |
+
}
|
96 |
+
results.append(zaak_info)
|
97 |
+
|
98 |
+
return results
|
99 |
+
|
100 |
+
except Exception as e:
|
101 |
+
print(f"Error fetching parliamentary items: {str(e)}")
|
102 |
+
return []
|
103 |
+
|
104 |
@tool
|
105 |
def get_kamerlid_reizen(achternaam: str) -> List[Dict[str, str]]:
|
106 |
"""
|
|
|
448 |
|
449 |
agent = CodeAgent(
|
450 |
model=model,
|
451 |
+
tools=[final_answer,
|
452 |
+
Get_Active_Fractions,
|
453 |
+
get_fraction_members,
|
454 |
+
get_kamerlid_reizen,
|
455 |
+
get_kamerlid_geschenken,
|
456 |
+
get_kamerlid_nevenfuncties,
|
457 |
+
get_kamervragen], ## the given tools
|
458 |
max_steps=6,
|
459 |
verbosity_level=1,
|
460 |
grammar=None,
|