optimize descriptions
This commit is contained in:
+12
-12
@@ -12,18 +12,18 @@ class KikKararTipi(str, Enum):
|
|||||||
|
|
||||||
class KikSearchRequest(BaseModel):
|
class KikSearchRequest(BaseModel):
|
||||||
"""Model for KIK Decision search criteria."""
|
"""Model for KIK Decision search criteria."""
|
||||||
karar_tipi: KikKararTipi = Field(KikKararTipi.UYUSMAZLIK, description="Type of KIK Decision.")
|
karar_tipi: KikKararTipi = Field(KikKararTipi.UYUSMAZLIK, description="Type")
|
||||||
karar_no: Optional[str] = Field(None, description="Decision Number (e.g., '2024/UH.II-1766').")
|
karar_no: Optional[str] = Field(None, description="Number")
|
||||||
karar_tarihi_baslangic: Optional[str] = Field(None, description="Decision Date Start (DD.MM.YYYY).", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
karar_tarihi_baslangic: Optional[str] = Field(None, description="Start date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
||||||
karar_tarihi_bitis: Optional[str] = Field(None, description="Decision Date End (DD.MM.YYYY).", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
karar_tarihi_bitis: Optional[str] = Field(None, description="End date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
||||||
resmi_gazete_sayisi: Optional[str] = Field(None, description="Official Gazette Number.")
|
resmi_gazete_sayisi: Optional[str] = Field(None, description="Gazette no")
|
||||||
resmi_gazete_tarihi: Optional[str] = Field(None, description="Official Gazette Date (DD.MM.YYYY).", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
resmi_gazete_tarihi: Optional[str] = Field(None, description="Gazette date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
||||||
basvuru_konusu_ihale: Optional[str] = Field(None, description="Tender subject of the application.")
|
basvuru_konusu_ihale: Optional[str] = Field(None, description="Tender subject")
|
||||||
basvuru_sahibi: Optional[str] = Field(None, description="Applicant.")
|
basvuru_sahibi: Optional[str] = Field(None, description="Applicant")
|
||||||
ihaleyi_yapan_idare: Optional[str] = Field(None, description="Procuring Entity.")
|
ihaleyi_yapan_idare: Optional[str] = Field(None, description="Entity")
|
||||||
yil: Optional[str] = Field(None, description="Year of the decision.")
|
yil: Optional[str] = Field(None, description="Year")
|
||||||
karar_metni: Optional[str] = Field(None, description="Keyword/phrase in decision text.")
|
karar_metni: Optional[str] = Field(None, description="Text search")
|
||||||
page: int = Field(1, ge=1, description="Results page number.")
|
page: int = Field(1, ge=1, description="Page")
|
||||||
|
|
||||||
class KikDecisionEntry(BaseModel):
|
class KikDecisionEntry(BaseModel):
|
||||||
"""Represents a single decision entry from KIK search results."""
|
"""Represents a single decision entry from KIK search results."""
|
||||||
|
|||||||
+103
-56
@@ -325,6 +325,44 @@ Her iki tool da sayfalanmış Markdown döndürür:
|
|||||||
- **Temel hak ihlalleri**: Sistematik ihlal tespiti
|
- **Temel hak ihlalleri**: Sistematik ihlal tespiti
|
||||||
- **Emsal karar**: Benzer davalar için içtihat
|
- **Emsal karar**: Benzer davalar için içtihat
|
||||||
|
|
||||||
|
## Parameter Details
|
||||||
|
### search_anayasa_norm_denetimi_decisions
|
||||||
|
- **keywords_all**: Keywords for AND logic (all must be present)
|
||||||
|
- **keywords_any**: Keywords for OR logic (any can be present)
|
||||||
|
- **keywords_exclude**: Keywords to exclude from results
|
||||||
|
- **period**: Constitutional period - "ALL", "1" (1961 Constitution), "2" (1982 Constitution)
|
||||||
|
- **case_number_esas**: Case registry number (e.g., '2023/123')
|
||||||
|
- **decision_number_karar**: Decision number (e.g., '2023/456')
|
||||||
|
- **first_review_date_start/end**: First review date range (DD/MM/YYYY)
|
||||||
|
- **decision_date_start/end**: Decision date range (DD/MM/YYYY)
|
||||||
|
- **application_type**: "ALL", "1" (İptal), "2" (İtiraz), "3" (Diğer)
|
||||||
|
- **applicant_general_name**: General applicant name
|
||||||
|
- **applicant_specific_name**: Specific applicant name
|
||||||
|
- **official_gazette_date_start/end**: Official Gazette date range
|
||||||
|
- **official_gazette_number_start/end**: Official Gazette number range
|
||||||
|
- **has_press_release**: "ALL", "0" (No), "1" (Yes)
|
||||||
|
- **has_dissenting_opinion**: "ALL", "0" (No), "1" (Yes)
|
||||||
|
- **has_different_reasoning**: "ALL", "0" (No), "1" (Yes)
|
||||||
|
- **attending_members_names**: List of attending members' exact names
|
||||||
|
- **rapporteur_name**: Rapporteur's exact name
|
||||||
|
- **norm_type**: Type of reviewed norm (law, decree, regulation, etc.)
|
||||||
|
- **norm_id_or_name**: Number or name of the norm
|
||||||
|
- **norm_article**: Article number of the norm
|
||||||
|
- **review_outcomes**: List of review outcomes
|
||||||
|
- **reason_for_final_outcome**: Main reason for decision outcome
|
||||||
|
- **basis_constitution_article_numbers**: Supporting Constitution article numbers
|
||||||
|
- **results_per_page**: Results per page (10, 20, 30, 40, 50)
|
||||||
|
- **page_to_fetch**: Page number to fetch
|
||||||
|
- **sort_by_criteria**: Sort criteria ('KararTarihi', 'YayinTarihi', 'Toplam')
|
||||||
|
|
||||||
|
### search_anayasa_bireysel_basvuru_report
|
||||||
|
- **keywords**: Keywords for AND logic (all must be present)
|
||||||
|
- **page_to_fetch**: Page number for the report (default: 1)
|
||||||
|
|
||||||
|
### Document Tools
|
||||||
|
- **document_url**: URL path or full URL of the decision
|
||||||
|
- **page_number**: Page number for paginated content (1-indexed, default: 1)
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
1. **Norm control önce**: Kanun iptal edilmiş mi kontrol
|
1. **Norm control önce**: Kanun iptal edilmiş mi kontrol
|
||||||
2. **Bireysel başvuru ikinci**: Kişisel hak ihlalleri için
|
2. **Bireysel başvuru ikinci**: Kişisel hak ihlalleri için
|
||||||
@@ -432,6 +470,25 @@ Kamu ihale uyuşmazlıklarının ilk ve son merci çözüm organı. Kamu İhale
|
|||||||
3. **İhale sonrası**: Sonuç bildirimi, itirazlar
|
3. **İhale sonrası**: Sonuç bildirimi, itirazlar
|
||||||
4. **Sözleşme**: İmza, uygulama
|
4. **Sözleşme**: İmza, uygulama
|
||||||
|
|
||||||
|
## Parameter Details
|
||||||
|
### search_kik_decisions
|
||||||
|
- **karar_tipi**: Decision type - "rbUyusmazlik" (disputes), "rbDuzenleyici" (regulatory), "rbMahkeme" (court)
|
||||||
|
- **karar_no**: Decision number (e.g., '2024/UH.II-1766')
|
||||||
|
- **karar_tarihi_baslangic**: Decision start date (DD.MM.YYYY format)
|
||||||
|
- **karar_tarihi_bitis**: Decision end date (DD.MM.YYYY format)
|
||||||
|
- **basvuru_sahibi**: Applicant name/company
|
||||||
|
- **ihaleyi_yapan_idare**: Procuring entity (ministry, municipality, etc.)
|
||||||
|
- **basvuru_konusu_ihale**: Tender subject/description
|
||||||
|
- **karar_metni**: Text search with operators: +word (AND), -word (exclude)
|
||||||
|
- **yil**: Decision year
|
||||||
|
- **resmi_gazete_tarihi**: Official Gazette date (DD.MM.YYYY)
|
||||||
|
- **resmi_gazete_sayisi**: Official Gazette number
|
||||||
|
- **page**: Results page number
|
||||||
|
|
||||||
|
### get_kik_document_markdown
|
||||||
|
- **karar_id**: Base64 encoded decision identifier from search results
|
||||||
|
- **page_number**: Page number for paginated content (1-indexed, default: 1)
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
1. **İhale türü**: Açık, belli istekliler arası, pazarlık
|
1. **İhale türü**: Açık, belli istekliler arası, pazarlık
|
||||||
2. **Süreç aşaması**: Hangi aşamada sorun olduğu
|
2. **Süreç aşaması**: Hangi aşamada sorun olduğu
|
||||||
@@ -479,6 +536,20 @@ Rekabet hukuku ihlallerini inceleyen ve ceza veren idari otorite. Rekabet Kanunu
|
|||||||
4. **Perakende**: Zincir mağazalar
|
4. **Perakende**: Zincir mağazalar
|
||||||
5. **İnşaat**: Müteahhitlik sektörü
|
5. **İnşaat**: Müteahhitlik sektörü
|
||||||
|
|
||||||
|
## Parameter Details
|
||||||
|
### search_rekabet_kurumu_decisions
|
||||||
|
- **sayfaAdi**: Search in decision title (Başlık)
|
||||||
|
- **YayinlanmaTarihi**: Publication date (DD.MM.YYYY format)
|
||||||
|
- **PdfText**: Search text. For exact phrases use double quotes: "vertical agreement"
|
||||||
|
- **KararTuru**: Decision type - "Birleşme ve Devralma", "Rekabet İhlali", etc.
|
||||||
|
- **KararSayisi**: Decision number (Karar Sayısı)
|
||||||
|
- **KararTarihi**: Decision date (DD.MM.YYYY format)
|
||||||
|
- **page**: Page number for results list
|
||||||
|
|
||||||
|
### get_rekabet_kurumu_document
|
||||||
|
- **karar_id**: GUID from search results
|
||||||
|
- **page_number**: Requested page for Markdown content (1-indexed, default: 1)
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
1. **Sektör odaklı**: İlgili sektörde arama yapın
|
1. **Sektör odaklı**: İlgili sektörde arama yapın
|
||||||
2. **Karar türü seçimi**: İhtiyacınıza uygun kategori
|
2. **Karar türü seçimi**: İhtiyacınıza uygun kategori
|
||||||
@@ -1266,37 +1337,37 @@ async def get_uyusmazlik_document_markdown_from_url(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
async def search_anayasa_norm_denetimi_decisions(
|
async def search_anayasa_norm_denetimi_decisions(
|
||||||
keywords_all: List[str] = Field(default_factory=list, description="Keywords for AND logic."),
|
keywords_all: List[str] = Field(default_factory=list, description="AND keywords"),
|
||||||
keywords_any: List[str] = Field(default_factory=list, description="Keywords for OR logic."),
|
keywords_any: List[str] = Field(default_factory=list, description="OR keywords"),
|
||||||
keywords_exclude: List[str] = Field(default_factory=list, description="Keywords to exclude."),
|
keywords_exclude: List[str] = Field(default_factory=list, description="Exclude keywords"),
|
||||||
period: Literal["ALL", "1", "2"] = Field("ALL", description="Constitutional period ('ALL': All, '1': 1961, '2': 1982)."),
|
period: Literal["ALL", "1", "2"] = Field("ALL", description="Period"),
|
||||||
case_number_esas: Optional[str] = Field(None, description="Case registry number (e.g., '2023/123')."),
|
case_number_esas: Optional[str] = Field(None, description="Case number"),
|
||||||
decision_number_karar: Optional[str] = Field(None, description="Decision number (e.g., '2023/456')."),
|
decision_number_karar: Optional[str] = Field(None, description="Decision number"),
|
||||||
first_review_date_start: Optional[str] = Field(None, description="First review start date (DD/MM/YYYY)."),
|
first_review_date_start: Optional[str] = Field(None, description="Review start date"),
|
||||||
first_review_date_end: Optional[str] = Field(None, description="First review end date (DD/MM/YYYY)."),
|
first_review_date_end: Optional[str] = Field(None, description="Review end date"),
|
||||||
decision_date_start: Optional[str] = Field(None, description="Decision start date (DD/MM/YYYY)."),
|
decision_date_start: Optional[str] = Field(None, description="Decision start"),
|
||||||
decision_date_end: Optional[str] = Field(None, description="Decision end date (DD/MM/YYYY)."),
|
decision_date_end: Optional[str] = Field(None, description="Decision end"),
|
||||||
application_type: Literal["ALL", "1", "2", "3"] = Field("ALL", description="Application type ('ALL': All, '1': İptal, '2': İtiraz, '3': Diğer)."),
|
application_type: Literal["ALL", "1", "2", "3"] = Field("ALL", description="App type"),
|
||||||
applicant_general_name: Optional[str] = Field(None, description="General applicant name."),
|
applicant_general_name: Optional[str] = Field(None, description="Applicant"),
|
||||||
applicant_specific_name: Optional[str] = Field(None, description="Specific applicant name."),
|
applicant_specific_name: Optional[str] = Field(None, description="Specific name"),
|
||||||
official_gazette_date_start: Optional[str] = Field(None, description="Official Gazette start date (DD/MM/YYYY)."),
|
official_gazette_date_start: Optional[str] = Field(None, description="Gazette start"),
|
||||||
official_gazette_date_end: Optional[str] = Field(None, description="Official Gazette end date (DD/MM/YYYY)."),
|
official_gazette_date_end: Optional[str] = Field(None, description="Gazette end"),
|
||||||
official_gazette_number_start: Optional[str] = Field(None, description="Official Gazette starting number."),
|
official_gazette_number_start: Optional[str] = Field(None, description="Gazette no start"),
|
||||||
official_gazette_number_end: Optional[str] = Field(None, description="Official Gazette ending number."),
|
official_gazette_number_end: Optional[str] = Field(None, description="Gazette no end"),
|
||||||
has_press_release: Literal["ALL", "0", "1"] = Field("ALL", description="Press release ('ALL': All, '0': No, '1': Yes)."),
|
has_press_release: Literal["ALL", "0", "1"] = Field("ALL", description="Press release"),
|
||||||
has_dissenting_opinion: Literal["ALL", "0", "1"] = Field("ALL", description="Dissenting opinion ('ALL': All, '0': No, '1': Yes)."),
|
has_dissenting_opinion: Literal["ALL", "0", "1"] = Field("ALL", description="Dissenting"),
|
||||||
has_different_reasoning: Literal["ALL", "0", "1"] = Field("ALL", description="Different reasoning ('ALL': All, '0': No, '1': Yes)."),
|
has_different_reasoning: Literal["ALL", "0", "1"] = Field("ALL", description="Different reason"),
|
||||||
attending_members_names: List[str] = Field(default_factory=list, description="List of attending members' exact names."),
|
attending_members_names: List[str] = Field(default_factory=list, description="Members"),
|
||||||
rapporteur_name: Optional[str] = Field(None, description="Rapporteur's exact name."),
|
rapporteur_name: Optional[str] = Field(None, description="Rapporteur"),
|
||||||
norm_type: Literal["ALL", "1", "2", "14", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "0", "13"] = Field("ALL", description="Type of reviewed norm."),
|
norm_type: Literal["ALL", "1", "2", "14", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "0", "13"] = Field("ALL", description="Norm type"),
|
||||||
norm_id_or_name: Optional[str] = Field(None, description="Number or name of the norm."),
|
norm_id_or_name: Optional[str] = Field(None, description="Norm name"),
|
||||||
norm_article: Optional[str] = Field(None, description="Article number of the norm."),
|
norm_article: Optional[str] = Field(None, description="Article"),
|
||||||
review_outcomes: List[Literal["ALL", "1", "2", "3", "4", "5", "6", "7", "8", "12"]] = Field(default_factory=list, description="List of review outcomes."),
|
review_outcomes: List[Literal["ALL", "1", "2", "3", "4", "5", "6", "7", "8", "12"]] = Field(default_factory=list, description="Outcomes"),
|
||||||
reason_for_final_outcome: Literal["ALL", "29", "1", "2", "30", "3", "4", "27", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"] = Field("ALL", description="Main reason for decision outcome."),
|
reason_for_final_outcome: Literal["ALL", "29", "1", "2", "30", "3", "4", "27", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"] = Field("ALL", description="Reason"),
|
||||||
basis_constitution_article_numbers: List[str] = Field(default_factory=list, description="List of supporting Constitution article numbers."),
|
basis_constitution_article_numbers: List[str] = Field(default_factory=list, description="Articles"),
|
||||||
results_per_page: int = Field(10, description="Results per page (10, 20, 30, 40, 50)."),
|
results_per_page: int = Field(10, description="Count"),
|
||||||
page_to_fetch: int = Field(1, ge=1, description="Page number to fetch."),
|
page_to_fetch: int = Field(1, ge=1, description="Page"),
|
||||||
sort_by_criteria: str = Field("KararTarihi", description="Sort criteria ('KararTarihi', 'YayinTarihi', 'Toplam').")
|
sort_by_criteria: str = Field("KararTarihi", description="Sort")
|
||||||
) -> AnayasaSearchResult:
|
) -> AnayasaSearchResult:
|
||||||
"""Search Constitutional Court norm control decisions with comprehensive filtering."""
|
"""Search Constitutional Court norm control decisions with comprehensive filtering."""
|
||||||
|
|
||||||
@@ -2404,31 +2475,7 @@ def get_preview_text(markdown_content: str, skip_chars: int = 100, preview_chars
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
async def search(
|
async def search(
|
||||||
query: str = Field(..., description="""Search query for Turkish legal documents via Bedesten API.
|
query: str = Field(..., description="Turkish search query")
|
||||||
|
|
||||||
IMPORTANT: This tool is specifically designed for ChatGPT Deep Research.
|
|
||||||
Do NOT use for regular questions - use specific court tools instead.
|
|
||||||
|
|
||||||
SEARCH LANGUAGE REQUIREMENT:
|
|
||||||
- Keywords MUST be in Turkish language only
|
|
||||||
- Turkish legal documents require Turkish search terms
|
|
||||||
- English terms will return no results - always translate to Turkish first
|
|
||||||
- Examples: "property rights" -> "mülkiyet hakkı", "contract violation" -> "sözleşme ihlali"
|
|
||||||
|
|
||||||
Bedesten API Search Operators:
|
|
||||||
- Regular search: "mülkiyet kararı" - searches words separately (OR logic)
|
|
||||||
- Exact phrase: "\"mülkiyet kararı\"" - searches exact phrase (more precise)
|
|
||||||
- Required terms: "+mülkiyet +hak" - both terms must be present (AND logic)
|
|
||||||
- Excluded terms: "+mülkiyet -kira" - first term required, second excluded
|
|
||||||
- Combined: "+\"mülkiyet hakkı\" -\"kira sözleşmesi\"" - exact phrase required, exclude another
|
|
||||||
- Legal concepts: "\"idari işlem\"", "\"sözleşme ihlali\"", "\"tazminat davası\""
|
|
||||||
|
|
||||||
Searches across all Turkish courts via Bedesten unified API:
|
|
||||||
- Yargıtay (Court of Cassation) - Supreme court civil/criminal decisions
|
|
||||||
- Danıştay (Council of State) - Administrative court decisions
|
|
||||||
- Yerel Hukuk (Local Civil Courts) - First instance civil decisions
|
|
||||||
- İstinaf Hukuk (Civil Appeals Courts) - Appellate court decisions
|
|
||||||
- Kanun Yararına Bozma (KYB) - Extraordinary appeal decisions""")
|
|
||||||
) -> Dict[str, List[Dict[str, str]]]:
|
) -> Dict[str, List[Dict[str, str]]]:
|
||||||
"""
|
"""
|
||||||
Bedesten API search tool for ChatGPT Deep Research compatibility.
|
Bedesten API search tool for ChatGPT Deep Research compatibility.
|
||||||
|
|||||||
@@ -25,17 +25,14 @@ class RekabetKararTuruAdiEnum(str, Enum):
|
|||||||
|
|
||||||
class RekabetKurumuSearchRequest(BaseModel):
|
class RekabetKurumuSearchRequest(BaseModel):
|
||||||
"""Model for Rekabet Kurumu (Turkish Competition Authority) search request."""
|
"""Model for Rekabet Kurumu (Turkish Competition Authority) search request."""
|
||||||
sayfaAdi: Optional[str] = Field(None, description="Search in decision title (Başlık).")
|
sayfaAdi: Optional[str] = Field(None, description="Title")
|
||||||
YayinlanmaTarihi: Optional[str] = Field(None, description="Publication date (Yayım Tarihi), e.g., DD.MM.YYYY.")
|
YayinlanmaTarihi: Optional[str] = Field(None, description="Pub date")
|
||||||
PdfText: Optional[str] = Field(
|
PdfText: Optional[str] = Field(None, description="Search text")
|
||||||
None,
|
|
||||||
description='Search in decision text (Metin). For an exact phrase match, enclose the phrase in double quotes (e.g., "\\"vertical agreement\\" competition). The website indicates that using "" provides more precise results for phrases.'
|
|
||||||
)
|
|
||||||
# This field uses the GUID enum as it's used by the client to make the actual web request.
|
# This field uses the GUID enum as it's used by the client to make the actual web request.
|
||||||
KararTuruID: Optional[RekabetKararTuruGuidEnum] = Field(RekabetKararTuruGuidEnum.TUMU, description="Decision type (Karar Türü) GUID for internal client use, corresponding to the website's values.")
|
KararTuruID: Optional[RekabetKararTuruGuidEnum] = Field(RekabetKararTuruGuidEnum.TUMU, description="Type")
|
||||||
KararSayisi: Optional[str] = Field(None, description="Decision number (Karar Sayısı).")
|
KararSayisi: Optional[str] = Field(None, description="Number")
|
||||||
KararTarihi: Optional[str] = Field(None, description="Decision date (Karar Tarihi), e.g., DD.MM.YYYY.")
|
KararTarihi: Optional[str] = Field(None, description="Date")
|
||||||
page: int = Field(1, ge=1, description="Page number to fetch for results list.")
|
page: int = Field(1, ge=1, description="Page")
|
||||||
|
|
||||||
class RekabetDecisionSummary(BaseModel):
|
class RekabetDecisionSummary(BaseModel):
|
||||||
"""Model for a single Rekabet Kurumu decision summary from search results."""
|
"""Model for a single Rekabet Kurumu decision summary from search results."""
|
||||||
|
|||||||
Reference in New Issue
Block a user