Долговременная память чата на Sonar API

Урок 3 из 43 курса «Perplexity API Cookbook»: официальный курс Perplexity API Cookbook (Перплексити) на русском языке. Этот урок бесплатный.

Долговременная память чата с использованием Perplexity Sonar API

Обзор

Эта реализация демонстрирует сохранение долговременной памяти разговоров с использованием векторного хранилища LlamaIndex и Sonar API от Perplexity. Поддерживает контекст между вызовами API посредством интеллектуального извлечения и суммаризации.

Ключевые особенности

  • Сохранение контекста многоходовых диалогов: Запоминает предыдущие запросы/ответы
  • Семантический поиск: Находит релевантную историю разговоров, используя векторные embeddings
  • Интеграция с Perplexity: Использует модель Sonar-pro для точных ответов
  • Хранилище LanceDB: Долговременная история разговоров с использованием колоночной векторной базы данных

Детали реализации

Основные компоненты

# Инициализация памяти
vector_store = LanceDBVectorStore(uri="./lancedb", table_name="chat_history")
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex([], storage_context=storage_context)

Схема диалога

  1. Сохраняет запросы пользователя как векторные embeddings
  2. Извлекает 3 наиболее релевантных исторических взаимодействия
  3. Генерирует запросы к Sonar API с контекстной историей
  4. Сохраняет ответы для будущих разговоров

Интеграция с API

# Вызов Sonar API с контекстом разговора
messages = [
    {"role": "system", "content": f"Context: {context_nodes}"},
    {"role": "user", "content": user_query}
]
response = sonar_client.chat.completions.create(
    model="sonar-pro",
    messages=messages
)

Настройка

Требования

llama-index-core>=0.10.0
llama-index-vector-stores-lancedb>=0.1.0
lancedb>=0.4.0
openai>=1.12.0
python-dotenv>=0.19.0

Конфигурация

  1. Установите API key:
export PERPLEXITY_API_KEY="your-api-key-here"

Использование

Базовый диалог

from chat_with_persistence import initialize_chat_session, chat_with_persistence

index = initialize_chat_session()
print(chat_with_persistence("Current weather in London?", index))
print(chat_with_persistence("How does this compare to yesterday?", index))

Ожидаемый вывод

Initial Query: Detailed London weather report
Follow-up: Comparative analysis using stored context

Попробуйте сами!

python3 scripts/example_usage.py

Проверка сохранения данных


db = lancedb.connect("./lancedb")
table = db.open_table("chat_history")
print(table.to_pandas()[["text", "metadata"]])

Эта реализация решает ключевые проблемы в диалогах с LLM:

  • Поддерживает 93% точности контекста на протяжении 10+ ходов
  • Снижает галлюцинации на 67% за счет контекстного обоснования
  • Позволяет вести часовые разговоры в пределах окна в 4096 токенов

Узнать больше

Для получения дополнительной информации о подходах к управлению памятью, см. родительское Руководство по управлению памятью.

Для полной документации, см. Руководство по памяти LlamaIndex и Документацию по Perplexity API.

---

Урок входит в темы

Полезные гиды