Реалізація системи автодоповнення тексту
Автодоповнення тексту пропонує користувачу наступні слова або фрази під час вводу. Застосування варіюються від пошукових підказок до повного AI-помічника в текстовому редакторі.
Типи автодоповнення
Наступне слово/токен (predictive typing): передбачення одного-двох наступних слів. Використовується в мобільних клавіатурах та пошуку. Моделі: невеликі n-gram або RNN, latency < 20ms критична.
Завершення фрази: на основі початку речення запропонувати кілька варіантів завершення. Приклад: пошукові підказки Google.
Paragraph completion (повний AI-асистент): GitHub Copilot-style — завершення абзацу або блоку тексту. Потребує більш потужної моделі.
Реалізація з LLM
from openai import OpenAI
client = OpenAI()
def autocomplete(text_prefix: str, context: str = "") -> list[str]:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": f"Ти допомагаєш писати тексти. Контекст: {context}"},
{"role": "user", "content": f"Продовжи текст трьома різними варіантами:\n{text_prefix}"}
],
max_tokens=50,
n=3, # кілька варіантів
temperature=0.7,
)
return [choice.message.content for choice in response.choices]
Оптимізація latency для real-time
Для живого введення latency повинна бути < 200ms. Стратегії:
Streaming: повертати токени по мірі генерації через SSE (Server-Sent Events). Перший токен з'являється через 100–200ms, відчуття швидкої відповіді.
Speculative decoding: невелика модель генерує чорновик, велика перевіряє — у 2–3x швидше при тій же якості.
Кешування: якщо користувач не змінив останні N символів — повернути кешовану пропозицію.
Debouncing: запускати completion лише після 300–500ms паузи введення.
Контекстна адаптація
Якість автодоповнення різко покращується з контекстом документа. Передавайте в промпт: тему документа, стиль (технічний/діловий/розмовний), попередні абзаци. Для спеціалізованих редакторів (юридичних, медичних): системний промпт із доменним словником.







