0Pricing
AI Prompt Engineering · Lekcja

Wstrzykiwanie glosariusza i ontologii domenowej

Osadzanie terminologii i wiedzy specyficznych dla domeny w promptach systemowych.

Wstrzykiwanie glosariusza i ontologii domenowej to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Problem z rozróżnianiem znaczeń

Język specjalistyczny jest pełen niejednoznaczności. „Yield” oznacza w finansach rentowność obligacji, a w rolnictwie plon. „Resolution” oznacza w interfejsie użytkownika rozdzielczość ekranu, a w obsłudze klienta rozwiązanie problemu. Bez kontekstu dziedzinowego modele wybierają najczęstsze znaczenie ogólnojęzykowe — które w specjalistycznych dziedzinach jest niewłaściwe.

Schemat wstrzykiwania glosariusza

Glosariusz dziedzinowy należy wstrzyknąć bezpośrednio do promptu systemowego. Nadpisuje to domyślny słownik modelu i zapewnia prawidłową interpretację terminów specjalistycznych w całej sesji.

FINANCE_GLOSSARY = '''
DOMAIN GLOSSARY (these definitions override general language meaning):
- yield: bond yield (annual return as percentage of bond price), NOT crop or harvest
- duration: interest rate sensitivity measure (modified duration), NOT time length
- spread: yield spread between two bonds, NOT physical spreading
- convexity: second-order price sensitivity to interest rate changes, NOT geometry
- tenor: remaining time to maturity of a financial instrument, NOT musical pitch
- floor: minimum interest rate in a rate agreement, NOT building floor
- cap: maximum interest rate, NOT a hat or market capitalization
- swap: exchange of cash flows between counterparties, NOT physical exchange
- basis: difference between spot and futures price, NOT foundation
'''

FINANCE_SYSTEM_PROMPT = (
    'You are a fixed income analyst.\n\n'
    + FINANCE_GLOSSARY +
    '\nAlways use these domain definitions when answering questions.'
)

import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')

response = client.messages.create(
    model='claude-opus-4-5', max_tokens=500,
    system=FINANCE_SYSTEM_PROMPT,
    messages=[{'role': 'user', 'content': 'What is the yield of a 10-year bond?'}]
)
print(response.content[0].text)

Tworzenie pliku glosariusza dziedzinowego

Glosariusze należy przechowywać jako ustrukturyzowane pliki YAML, aby można było je wersjonować, udostępniać w różnych promptach i aktualizować przez ekspertów dziedzinowych bez modyfikowania kodu promptów.

# glossaries/fixed_income.yaml
glossary:
  yield:
    domain_meaning: Annual return on a bond as a percentage of its current market price
    general_meaning: Crop or harvest output
    use_domain: true
    examples:
      - 'The 10-year Treasury yield rose to 4.5%'
      - 'Current yield = annual coupon / market price'

  duration:
    domain_meaning: |
      Measure of a bond's price sensitivity to interest rate changes.
      Modified duration = -dP/P / dr
    general_meaning: Length of time
    use_domain: true

  basis:
    domain_meaning: Difference between spot price and futures price of the same instrument
    general_meaning: Foundation or base
    use_domain: true

# glossaries/load.py
import yaml

def load_glossary(domain):
    with open(f'glossaries/{domain}.yaml') as f:
        data = yaml.safe_load(f)
    lines = ['DOMAIN GLOSSARY:']
    for term, info in data['glossary'].items():
        lines.append(f'- {term}: {info["domain_meaning"].strip()}')
    return '\n'.join(lines)

Wstrzykiwanie ontologii do złożonych dziedzin

Ontologia wykracza poza glosariusz — definiuje relacje między pojęciami, w tym hierarchie, ograniczenia i reguły. Wstrzyknięcie ontologii pomaga modelowi zrozumieć, które pojęcia należą do poszczególnych kategorii i jakie relacje między nimi zachodzą.

MEDICAL_ONTOLOGY_SNIPPET = '''
CLINICAL ONTOLOGY (use these relationships in all analysis):

Diagnosis Hierarchy:
- Condition > Category > Specific Diagnosis
- "Hypertension" is a specific diagnosis under "Cardiovascular Conditions"
- "Type 2 Diabetes" is under "Endocrine / Metabolic Conditions"

Medication Classes:
- ACE inhibitors (e.g., lisinopril) -> used for: hypertension, heart failure, CKD
- Beta-blockers (e.g., metoprolol) -> used for: hypertension, angina, heart failure
- Statins (e.g., atorvastatin) -> used for: hyperlipidemia, cardiovascular risk

Measurement Rules:
- "BP" means Blood Pressure, format: systolic/diastolic (e.g., 130/85 mmHg)
- "A1c" means glycated hemoglobin; > 6.5% is diagnostic for Type 2 Diabetes
- "eGFR" means estimated Glomerular Filtration Rate; < 60 mL/min/1.73m2 = CKD

Always use ICD-10 categories when classifying diagnoses.
'''

print(MEDICAL_ONTOLOGY_SNIPPET[:300])

Dynamiczne generowanie glosariusza

W przypadku dużych baz wiedzy należy dynamicznie generować ukierunkowany glosariusz — z głównego glosariusza wybierać tylko terminy najbardziej istotne dla bieżącego zadania, zachowując niewielkie zużycie okna kontekstu.

import json

# master_glossary.json — full domain glossary
MASTER_GLOSSARY = {
    'yield': 'Bond yield: annual return as percentage of current market price',
    'duration': 'Modified duration: bond price sensitivity to rate changes',
    'convexity': 'Second-order rate sensitivity measure',
    'swap': 'Exchange of fixed and floating cash flows',
    'option': 'Contract giving right (not obligation) to buy/sell an asset',
    'beta': 'Stock volatility relative to market index',
    'alpha': 'Excess return over benchmark after adjusting for risk',
    # ... hundreds more
}

def focused_glossary(user_query, master_glossary, max_terms=10):
    '''Select glossary terms most relevant to the user query.'''
    query_lower = user_query.lower()
    relevant = {}
    for term, definition in master_glossary.items():
        if term.lower() in query_lower or any(
            word in query_lower for word in definition.lower().split()[:5]
        ):
            relevant[term] = definition
        if len(relevant) >= max_terms:
            break
    lines = ['RELEVANT DOMAIN TERMS:']
    for t, d in relevant.items():
        lines.append(f'- {t}: {d}')
    return '\n'.join(lines)

query = 'What is the duration and convexity of this bond portfolio?'
print(focused_glossary(query, MASTER_GLOSSARY))

Rozróżnianie znaczeń w wielu dziedzinach

Niektóre zapytania obejmują wiele dziedzin. Należy wstrzyknąć kontekst wszystkich istotnych dziedzin i poinstruować model, aby rozróżniał znaczenia na podstawie kontekstu rozmowy.

MULTI_DOMAIN_SYSTEM = '''
This system serves both agricultural and financial users.
The domain is determined by context cues in the user message.

Domain disambiguation rules:
- If the user mentions "crops", "harvest", "acres", "soil", "planting":
  Use AGRICULTURAL definitions: yield = crop output, spread = physical spreading
- If the user mentions "bonds", "portfolio", "maturity", "coupon", "treasuries":
  Use FINANCIAL definitions: yield = bond yield, spread = yield spread
- If the domain is ambiguous:
  Ask the user to clarify: "Are you asking about agricultural or financial yields?"

AGRICULTURAL GLOSSARY:
- yield: crop output per unit area (e.g., bushels per acre)
- basis: difference between local cash price and futures price for a commodity

FINANCIAL GLOSSARY:
- yield: annual bond return as percentage of current price
- basis: yield spread between two financial instruments
'''

print('Multi-domain system prompt loaded.')
print('The model will ask for clarification when domain is ambiguous.')

Wymuszanie wyników zgodnych z ontologią

Wstrzyknięcie ontologii może ograniczyć wyniki modelu do używania wyłącznie wstępnie zdefiniowanych kategorii, zapobiegając swobodnemu kategoryzowaniu, które zakłóca dalsze przetwarzanie.

SUPPORT_ONTOLOGY_SYSTEM = '''
You are a support ticket classifier for a B2B SaaS company.

TICKET CATEGORY ONTOLOGY (use ONLY these exact category names):
Level 1 Categories:
- Billing > Sub-categories: Invoice Error, Subscription Change, Refund Request, Payment Failure
- Technical > Sub-categories: Bug Report, Performance Issue, Integration Error, Feature Not Working
- Account > Sub-categories: Access Request, User Management, Security Concern, Password Reset
- Feature Request > Sub-categories: New Feature, Enhancement, UI/UX Improvement

CLASSIFICATION RULES:
1. Always return exactly one Level 1 category and one Sub-category.
2. If ticket spans multiple categories, choose the PRIMARY issue.
3. If uncertain, use the category that would route to the most qualified team.
4. Return format: {"category": "Technical", "subcategory": "Bug Report", "confidence": "HIGH"}
   Confidence: HIGH (clear), MEDIUM (likely), LOW (ambiguous)
'''

def classify_ticket(ticket_text):
    import json
    response = client.messages.create(
        model='claude-opus-4-5', max_tokens=100,
        system=SUPPORT_ONTOLOGY_SYSTEM,
        messages=[{'role': 'user', 'content': f'Classify: {ticket_text}'}]
    )
    return json.loads(response.content[0].text)

Wstrzykiwanie ontologii prawnej

Ontologie z dziedziny prawa definiują hierarchie klauzul umownych, relacje między stronami i typy zobowiązań. Ich wstrzyknięcie zapewnia spójną klasyfikację we wszystkich zadaniach związanych z analizą umów.

LEGAL_ONTOLOGY = '''
CONTRACT CLAUSE ONTOLOGY:

Obligation Types:
- SHALL: mandatory obligation (enforceable duty)
- MAY: permissive right (optional action)
- SHALL NOT: mandatory prohibition
- WILL: future intention (weaker than SHALL)

Clause Risk Hierarchy:
- CRITICAL: financial exposure > $1M or termination rights
- HIGH: material business impact, IP rights, indemnification
- MEDIUM: operational restrictions, notice requirements
- LOW: administrative provisions, definitions

Party References (standardize to these canonical forms):
- "the Company", "we", "us" -> VENDOR
- "Customer", "Client", "you" -> CUSTOMER
- "third party", "subcontractor" -> THIRD_PARTY

Always use these canonical party names in your analysis.
Do not use the actual company names — replace with canonical form.
'''

print('Legal ontology loaded. Party names will be canonicalized in all analysis.')

Weryfikator spójności terminologii

Po otrzymaniu wyników modelu należy sprawdzić, czy terminy dziedzinowe są używane spójnie i czy ich znaczenia nie powracają do ogólnojęzykowych. Kontrola po przetworzeniu wychwytuje dryf terminologiczny.

PROHIBITED_GENERAL_MEANINGS = {
    # In fixed income context: these general meanings should not appear
    'yield': ['harvest', 'crop', 'produce', 'give way', 'surrender'],
    'duration': ['how long', 'length of time', 'period of time'],
    'floor': ['ground floor', 'building floor', 'floor plan'],
    'cap': ['hat', 'market cap', 'bottle cap'],
}

def check_terminology_consistency(text, domain_term):
    text_lower = text.lower()
    prohibited = PROHIBITED_GENERAL_MEANINGS.get(domain_term, [])
    violations = []
    for general_phrase in prohibited:
        if general_phrase in text_lower:
            # Find context window around the violation
            idx = text_lower.index(general_phrase)
            context = text[max(0, idx-50):idx+80]
            violations.append({'phrase': general_phrase, 'context': context})
    return violations

# Usage after LLM call
output = 'The yield of the bond is 4.5% per annum based on current market price.'
violations = check_terminology_consistency(output, 'yield')
if violations:
    print('Terminology violation detected:', violations)
else:
    print('Terminology consistency: PASS')

Zarządzanie wersjami glosariusza

Glosariusze dziedzinowe należy wersjonować razem z promptami. Zmiana terminologii, taka jak nowa definicja regulacyjna lub zaktualizowany standard kliniczny, wymaga ponownej oceny wszystkich promptów korzystających z objętych nią terminów.

# Glossary versioning with impact tracking
GLOSSARY_VERSIONS = {
    '1.0.0': {
        'yield': 'Bond yield: annual coupon / face value (current yield)',
        'duration': 'Macaulay duration'
    },
    '2.0.0': {
        'yield': 'Bond yield: annual return as % of current market price (yield to maturity)',
        'duration': 'Modified duration (more precise for risk management)',
        'convexity': 'Second-order rate sensitivity (new in v2)'  # new term
    }
}

def get_affected_prompts(old_version, new_version, prompt_registry):
    '''Find prompts that use terms changed between glossary versions.'''
    old_terms = set(GLOSSARY_VERSIONS[old_version].keys())
    new_terms = set(GLOSSARY_VERSIONS[new_version].keys())
    changed_terms = old_terms ^ new_terms  # symmetric difference

    affected = []
    for prompt_id, artifact in prompt_registry.items():
        if any(term in artifact['template'] for term in changed_terms):
            affected.append(prompt_id)
    return affected

print('Prompts affected by glossary v1.0.0 -> v2.0.0 update:', ['rate-analysis-v1', 'bond-report'])

Hierarchiczna ontologia z relacjami nadrzędny-podrzędny

Pełne ontologie definiują hierarchie pojęć nadrzędnych i podrzędnych. Promptowanie z użyciem hierarchii pozwala modelowi rozumować na właściwym poziomie szczegółowości — ani zbyt ogólnym, ani zbyt wąskim.

PRODUCT_ONTOLOGY = '''
PRODUCT CATEGORY ONTOLOGY (use for all product classification tasks):

Electronics
  Computing
    Laptops
      Gaming Laptops
      Ultrabooks
      Workstations
    Desktops
    Tablets
  Consumer Electronics
    Smartphones
    Smart Speakers
    Wearables
      Smartwatches
      Fitness Trackers

CLASSIFICATION RULES:
1. Always classify to the most specific level where evidence exists.
2. If a product matches multiple branches, use the primary use case.
3. Use exact taxonomy names from above — do not invent new categories.
4. If a product does not fit, use the nearest parent category and
   add "[NON-STANDARD: <reason>]" after the category name.
'''

print('Product ontology ready. 4-level hierarchy loaded.')

Szybkie sprawdzenie

Model wdrożono do analizy portfeli obligacji. Bez wstrzyknięcia glosariusza model interpretuje pytanie „Jaka jest rentowność tego instrumentu?” jako prośbę o opisanie plonów rolnych. Jaka jest przyczyna problemu i jak go naprawić?

Podsumowanie wstrzykiwania glosariuszy i ontologii

Wstrzykiwanie glosariusza dziedzinowego i ontologii rozwiązuje niejednoznaczność terminologiczną na poziomie systemu:

  • Wstrzykiwanie glosariusza: definiowanie znaczeń specjalistycznych w promptcie systemowym dla niejednoznacznych terminów
  • Wstrzykiwanie ontologii: udostępnianie hierarchii pojęć, reguł relacji i ograniczeń klasyfikacji
  • Dynamiczny glosariusz: wybieranie tylko istotnych terminów z głównego glosariusza w celu ograniczenia rozmiaru okna kontekstu
  • Rozróżnianie znaczeń w wielu dziedzinach: wstrzykiwanie reguł wykrywania dziedziny na podstawie kontekstu
  • Wersjonowanie: glosariusze należy wersjonować, a po zmianie terminów ponownie oceniać prompty
  • Kontrola spójności: przetwarzanie wyników po stronie aplikacji w celu wykrywania dryfu terminologicznego

Często zadawane pytania

Czy lekcja „Wstrzykiwanie glosariusza i ontologii domenowej” jest bezpłatna?

Tak — pełny tekst „Wstrzykiwanie glosariusza i ontologii domenowej” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Co nauczysz się w „Wstrzykiwanie glosariusza i ontologii domenowej”?

Osadzanie terminologii i wiedzy specyficznych dla domeny w promptach systemowych. Ćwiczysz AI Prompt Engineering z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Prompt Engineering?

Nie wymagamy żadnego doświadczenia. AI Prompt Engineering w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Wstrzykiwanie glosariusza i ontologii domenowej”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Prompt Engineering?

Tak. Każda lekcja AI Prompt Engineering zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wzorce promptów dla domeny prawnej
  2. Prompting medyczny i kliniczny
  3. Prompty finansowe i ilościowe
  4. Wstrzykiwanie glosariusza i ontologii domenowej
← Powrót do AI Prompt Engineering