Kalamazooter commited on
Commit
deb53c7
·
verified ·
1 Parent(s): 80dce74

Kamervragen Implemented

Browse files
Files changed (1) hide show
  1. app.py +94 -1
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,Get_Active_Fractions,get_fraction_members,get_kamerlid_reizen,get_kamerlid_geschenken, get_kamerlid_nevenfuncties], ## the given tools
 
 
 
 
 
 
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,