trustgraph/docs/python-api.ru.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support
that dynamically loads language strings. You can test and use
different languages by simply passing the --lang flag (e.g., --lang
es for Spanish, --lang ru for Russian) or by configuring your
environment's LANG variable.

Automated Docs Translations: This PR introduces autonomously
translated Markdown documentation into several target languages,
including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew,
Arabic, Simplified Chinese, and Russian.
2026-04-14 12:08:32 +01:00

4078 lines
147 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout: default
title: "Справочник API TrustGraph на Python"
parent: "Russian (Beta)"
---
# Справочник API TrustGraph на Python
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
## Установка
```bash
pip install trustgraph
```
## Быстрый старт
Все классы и типы импортируются из пакета `trustgraph.api`:
```python
from trustgraph.api import Api, Triple, ConfigKey
# Create API client
api = Api(url="http://localhost:8088/")
# Get a flow instance
flow = api.flow().id("default")
# Execute a graph RAG query
response = flow.graph_rag(
query="What are the main topics?",
user="trustgraph",
collection="default"
)
```
## Оглавление
### Основное
[Api](#api)
### Клиенты потоков
[Flow](#flow)
[FlowInstance](#flowinstance)
[AsyncFlow](#asyncflow)
[AsyncFlowInstance](#asyncflowinstance)
### Клиенты WebSocket
[SocketClient](#socketclient)
[SocketFlowInstance](#socketflowinstance)
[AsyncSocketClient](#asyncsocketclient)
[AsyncSocketFlowInstance](#asyncsocketflowinstance)
### Операции пакетной обработки
[BulkClient](#bulkclient)
[AsyncBulkClient](#asyncbulkclient)
### Метрики
[Metrics](#metrics)
[AsyncMetrics](#asyncmetrics)
### Типы данных
[Triple](#triple)
[ConfigKey](#configkey)
[ConfigValue](#configvalue)
[DocumentMetadata](#documentmetadata)
[ProcessingMetadata](#processingmetadata)
[CollectionMetadata](#collectionmetadata)
[StreamingChunk](#streamingchunk)
[AgentThought](#agentthought)
[AgentObservation](#agentobservation)
[AgentAnswer](#agentanswer)
[RAGChunk](#ragchunk)
### Исключения
[ProtocolException](#protocolexception)
[TrustGraphException](#trustgraphexception)
[AgentError](#agenterror)
[ConfigError](#configerror)
[DocumentRagError](#documentragerror)
[FlowError](#flowerror)
[GatewayError](#gatewayerror)
[GraphRagError](#graphragerror)
[LLMError](#llmerror)
[LoadError](#loaderror)
[LookupError](#lookuperror)
[NLPQueryError](#nlpqueryerror)
[RowsQueryError](#rowsqueryerror)
[RequestError](#requesterror)
[StructuredQueryError](#structuredqueryerror)
[UnexpectedError](#unexpectederror)
[ApplicationException](#applicationexception)
--
## `Api`
```python
from trustgraph.api import Api
```
Основной клиент API TrustGraph для синхронных и асинхронных операций.
Этот класс предоставляет доступ ко всем сервисам TrustGraph, включая управление потоками,
операции с графом знаний, обработку документов, запросы RAG и многое другое. Он поддерживает
как коммуникационные модели на основе REST, так и на основе WebSocket.
Клиент может использоваться как менеджер контекста для автоматической очистки ресурсов:
```python
with Api(url="http://localhost:8088/") as api:
result = api.flow().id("default").graph_rag(query="test")
```
### Методы
### `__aenter__(self)`
Войдите в асинхронный контекстный менеджер.
### `__aexit__(self, *args)`
Выйдите из асинхронного контекстного менеджера и закройте соединения.
### `__enter__(self)`
Войдите в синхронный контекстный менеджер.
### `__exit__(self, *args)`
Выйдите из синхронного контекстного менеджера и закройте соединения.
### `__init__(self, url='http://localhost:8088/', timeout=60, token: str | None = None)`
Инициализируйте клиент API TrustGraph.
**Аргументы:**
`url`: Базовый URL для API TrustGraph (по умолчанию: "http://localhost:8088/"")
`timeout`: Время ожидания запроса в секундах (по умолчанию: 60)
`token`: Необязательный токен для аутентификации
**Пример:**
```python
# Local development
api = Api()
# Production with authentication
api = Api(
url="https://trustgraph.example.com/",
timeout=120,
token="your-api-token"
)
```
### `aclose(self)`
Закройте все асинхронные клиентские соединения.
Этот метод закрывает асинхронные WebSocket-соединения, пакетные операции и потоковые соединения.
Он автоматически вызывается при выходе из асинхронного контекстного менеджера.
**Пример:**
```python
api = Api()
async_socket = api.async_socket()
# ... use async_socket
await api.aclose() # Clean up connections
# Or use async context manager (automatic cleanup)
async with Api() as api:
async_socket = api.async_socket()
# ... use async_socket
# Automatically closed
```
### `async_bulk(self)`
Получите клиент для асинхронных пакетных операций.
Предоставляет пакетные операции импорта/экспорта в стиле async/await через WebSocket
для эффективной обработки больших наборов данных.
**Возвращает:** AsyncBulkClient: Асинхронный клиент для пакетных операций.
**Пример:**
```python
async_bulk = api.async_bulk()
# Export triples asynchronously
async for triple in async_bulk.export_triples(flow="default"):
print(f"{triple.s} {triple.p} {triple.o}")
# Import with async generator
async def triple_gen():
yield Triple(s="subj", p="pred", o="obj")
# ... more triples
await async_bulk.import_triples(
flow="default",
triples=triple_gen()
)
```
### `async_flow(self)`
Получите асинхронный клиент потоковой передачи на основе REST.
Предоставляет доступ к операциям потоковой передачи в стиле async/await. Это предпочтительно
для асинхронных приложений и фреймворков Python (FastAPI, aiohttp и т.д.).
**Возвращает:** AsyncFlow: Асинхронный клиент потоковой передачи
**Пример:**
```python
async_flow = api.async_flow()
# List flows
flow_ids = await async_flow.list()
# Execute operations
instance = async_flow.id("default")
result = await instance.text_completion(
system="You are helpful",
prompt="Hello"
)
```
### `async_metrics(self)`
Получите асинхронного клиента для сбора метрик.
Предоставляет доступ к метрикам Prometheus в стиле async/await.
**Возвращает:** AsyncMetrics: Асинхронный клиент для сбора метрик.
**Пример:**
```python
async_metrics = api.async_metrics()
prometheus_text = await async_metrics.get()
print(prometheus_text)
```
### `async_socket(self)`
Получите асинхронный WebSocket-клиент для операций потоковой передачи.
Предоставляет доступ к WebSocket в стиле async/await с поддержкой потоковой передачи.
Это предпочтительный метод для асинхронной потоковой передачи в Python.
**Возвращает:** AsyncSocketClient: Асинхронный WebSocket-клиент
**Пример:**
```python
async_socket = api.async_socket()
flow = async_socket.flow("default")
# Stream agent responses
async for chunk in flow.agent(
question="Explain quantum computing",
user="trustgraph",
streaming=True
):
if hasattr(chunk, 'content'):
print(chunk.content, end='', flush=True)
```
### `bulk(self)`
Получите клиент для синхронных пакетных операций импорта/экспорта.
Пакетные операции позволяют эффективно передавать большие наборы данных через соединения WebSocket,
включая тройки, вложения, контексты сущностей и объекты.
**Возвращает:** BulkClient: Клиент для синхронных пакетных операций.
**Пример:**
```python
bulk = api.bulk()
# Export triples
for triple in bulk.export_triples(flow="default"):
print(f"{triple.s} {triple.p} {triple.o}")
# Import triples
def triple_generator():
yield Triple(s="subj", p="pred", o="obj")
# ... more triples
bulk.import_triples(flow="default", triples=triple_generator())
```
### `close(self)`
Закройте все синхронные клиентские соединения.
Этот метод закрывает соединения WebSocket и пакетных операций.
Он автоматически вызывается при выходе из контекстного менеджера.
**Пример:**
```python
api = Api()
socket = api.socket()
# ... use socket
api.close() # Clean up connections
# Or use context manager (automatic cleanup)
with Api() as api:
socket = api.socket()
# ... use socket
# Automatically closed
```
### `collection(self)`
Получите клиент Collection для управления наборами данных.
Коллекции организуют документы и данные графа знаний в
логические группы для изоляции и контроля доступа.
**Возвращает:** Collection: Клиент для управления коллекциями.
**Пример:**
```python
collection = api.collection()
# List collections
colls = collection.list_collections(user="trustgraph")
# Update collection metadata
collection.update_collection(
user="trustgraph",
collection="default",
name="Default Collection",
description="Main data collection"
)
```
### `config(self)`
Получите клиент Config для управления настройками конфигурации.
**Возвращает:** Config: Клиент для управления конфигурацией.
**Пример:**
```python
config = api.config()
# Get configuration values
values = config.get([ConfigKey(type="llm", key="model")])
# Set configuration
config.put([ConfigValue(type="llm", key="model", value="gpt-4")])
```
### `flow(self)`
Получите клиент Flow для управления и взаимодействия с потоками.
Потоки являются основными единицами выполнения в TrustGraph, предоставляя доступ к
сервисам, таким как агенты, запросы RAG, встраивания и обработка документов.
**Возвращает:** Flow: Клиент для управления потоками.
**Пример:**
```python
flow_client = api.flow()
# List available blueprints
blueprints = flow_client.list_blueprints()
# Get a specific flow instance
flow_instance = flow_client.id("default")
response = flow_instance.text_completion(
system="You are helpful",
prompt="Hello"
)
```
### `knowledge(self)`
Получите клиент Knowledge для управления ядрами графов знаний.
**Возвращает:** Клиент Knowledge для управления графами знаний.
**Пример:**
```python
knowledge = api.knowledge()
# List available KG cores
cores = knowledge.list_kg_cores(user="trustgraph")
# Load a KG core
knowledge.load_kg_core(id="core-123", user="trustgraph")
```
### `library(self)`
Получите клиент библиотеки для управления документами.
Библиотека предоставляет хранение документов, управление метаданными и
координацию рабочих процессов.
**Возвращает:** Library: Клиент для управления библиотекой документов
**Пример:**
```python
library = api.library()
# Add a document
library.add_document(
document=b"Document content",
id="doc-123",
metadata=[],
user="trustgraph",
title="My Document",
comments="Test document"
)
# List documents
docs = library.get_documents(user="trustgraph")
```
### `metrics(self)`
Получите синхронный клиент для сбора метрик для мониторинга.
Получает метрики в формате Prometheus из сервиса TrustGraph
для мониторинга и обеспечения наблюдаемости.
**Возвращает:** Метрики: Синхронный клиент для сбора метрик.
**Пример:**
```python
metrics = api.metrics()
prometheus_text = metrics.get()
print(prometheus_text)
```
### `request(self, path, request)`
Выполнить запрос REST API на низком уровне.
Этот метод предназначен в основном для внутреннего использования, но может использоваться для прямого
доступа к API, когда это необходимо.
**Аргументы:**
`path`: Путь к API (относительно базового URL)
`request`: Текстовые данные запроса в виде словаря
**Возвращает:** dict: Объект ответа
**Вызывает исключения:**
`ProtocolException`: Если код состояния ответа не равен 200 или ответ не является JSON
`ApplicationException`: Если ответ содержит ошибку
**Пример:**
```python
response = api.request("flow", {
"operation": "list-flows"
})
```
### `socket(self)`
Получите синхронного клиента WebSocket для операций потоковой передачи.
Соединения WebSocket обеспечивают поддержку потоковой передачи для ответов в режиме реального времени
от агентов, запросов RAG и завершения текста. Этот метод возвращает
синхронную обертку вокруг протокола WebSocket.
**Возвращает:** SocketClient: Синхронный клиент WebSocket
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Stream agent responses
for chunk in flow.agent(
question="Explain quantum computing",
user="trustgraph",
streaming=True
):
if hasattr(chunk, 'content'):
print(chunk.content, end='', flush=True)
```
--
## `Flow`
```python
from trustgraph.api import Flow
```
Клиент для управления потоками, предназначенный для операций с шаблонами и экземплярами потоков.
Этот класс предоставляет методы для управления шаблонами потоков и
экземплярами потоков (запущенными потоками). Шаблоны определяют структуру и
параметры потоков, в то время как экземпляры представляют активные потоки, которые могут
выполнять сервисы.
### Методы
### `__init__(self, api)`
Инициализация клиента потоков.
**Аргументы:**
`api`: Родительский экземпляр API для выполнения запросов.
### `delete_blueprint(self, blueprint_name)`
Удаление шаблона потока.
**Аргументы:**
`blueprint_name`: Имя шаблона, который необходимо удалить.
**Пример:**
```python
api.flow().delete_blueprint("old-blueprint")
```
### `get(self, id)`
Получить определение экземпляра активного процесса.
**Аргументы:**
`id`: Идентификатор экземпляра процесса
**Возвращает:** dict: Определение экземпляра процесса
**Пример:**
```python
flow_def = api.flow().get("default")
print(flow_def)
```
### `get_blueprint(self, blueprint_name)`
Получить определение схемы по имени.
**Аргументы:**
`blueprint_name`: Имя схемы, которую необходимо получить.
**Возвращает:** dict: Определение схемы в виде словаря.
**Пример:**
```python
blueprint = api.flow().get_blueprint("default")
print(blueprint) # Blueprint configuration
```
### `id(self, id='default')`
Получение объекта FlowInstance для выполнения операций над определенным потоком.
**Аргументы:**
`id`: Идентификатор потока (по умолчанию: "default")
**Возвращает:** FlowInstance: Объект Flow для операций сервиса.
**Пример:**
```python
flow = api.flow().id("my-flow")
response = flow.text_completion(
system="You are helpful",
prompt="Hello"
)
```
### `list(self)`
Перечислить все активные экземпляры потоков.
**Возвращает:** list[str]: Список идентификаторов экземпляров потоков.
**Пример:**
```python
flows = api.flow().list()
print(flows) # ['default', 'flow-1', 'flow-2', ...]
```
### `list_blueprints(self)`
Перечислить все доступные шаблоны потоков.
**Возвращает:** list[str]: Список имен шаблонов.
**Пример:**
```python
blueprints = api.flow().list_blueprints()
print(blueprints) # ['default', 'custom-flow', ...]
```
### `put_blueprint(self, blueprint_name, definition)`
Создать или обновить шаблон потока.
**Аргументы:**
`blueprint_name`: Имя для шаблона
`definition`: Словарь определения шаблона
**Пример:**
```python
definition = {
"services": ["text-completion", "graph-rag"],
"parameters": {"model": "gpt-4"}
}
api.flow().put_blueprint("my-blueprint", definition)
```
### `request(self, path=None, request=None)`
Отправьте API-запрос в рамках одного потока.
**Аргументы:**
`path`: Необязательный суффикс пути для конечных точек потока.
`request`: Словарь, содержащий полезную нагрузку запроса.
**Возвращает:** dict: Объект ответа.
**Вызывает исключение:**
`RuntimeError`: Если параметр запроса не указан.
### `start(self, blueprint_name, id, description, parameters=None)`
Запустите новый экземпляр потока из шаблона.
**Аргументы:**
`blueprint_name`: Имя шаблона для создания экземпляра.
`id`: Уникальный идентификатор экземпляра потока.
`description`: Описание, понятное человеку.
`parameters`: Необязательный словарь параметров.
**Пример:**
```python
api.flow().start(
blueprint_name="default",
id="my-flow",
description="My custom flow",
parameters={"model": "gpt-4"}
)
```
### `stop(self, id)`
Остановить запущенный экземпляр потока.
**Аргументы:**
`id`: Идентификатор экземпляра потока, который необходимо остановить.
**Пример:**
```python
api.flow().stop("my-flow")
```
--
## `FlowInstance`
```python
from trustgraph.api import FlowInstance
```
Клиент экземпляра потока для выполнения сервисов в определенном потоке.
Этот класс предоставляет доступ ко всем сервисам TrustGraph, включая:
Завершение текста и создание векторных представлений
Операции агентов с управлением состоянием
Запросы RAG к графам и документам
Операции с графами знаний (тройки, объекты)
Загрузка и обработка документов
Преобразование естественного языка в запрос GraphQL
Анализ структурированных данных и обнаружение схемы
Выполнение инструмента MCP
Шаблонизация запросов
Сервисы доступны через работающий экземпляр потока, идентифицированный по ID.
### Методы
### `__init__(self, api, id)`
Инициализация FlowInstance.
**Аргументы:**
`api`: Родительский клиент потока
`id`: Идентификатор экземпляра потока
### `agent(self, question, user='trustgraph', state=None, group=None, history=None)`
Выполнение операции агента с возможностями рассуждения и использования инструментов.
Агенты могут выполнять многоступенчатое рассуждение, использовать инструменты и поддерживать
состояние разговора в течение взаимодействий. Это синхронная версия без потоковой передачи.
**Аргументы:**
`question`: Вопрос или инструкция пользователя
`user`: Идентификатор пользователя (по умолчанию: "trustgraph")
`state`: Необязательный словарь состояния для разговоров с состоянием
`group`: Необязательный идентификатор группы для многопользовательских контекстов
`history`: Необязательная история разговора в виде списка словарей сообщений
**Возвращает:** str: Окончательный ответ агента
**Пример:**
```python
flow = api.flow().id("default")
# Simple question
answer = flow.agent(
question="What is the capital of France?",
user="trustgraph"
)
# With conversation history
history = [
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hi! How can I help?"}
]
answer = flow.agent(
question="Tell me about Paris",
user="trustgraph",
history=history
)
```
### `detect_type(self, sample)`
Определить тип данных для образца структурированных данных.
**Аргументы:**
`sample`: Образец данных для анализа (текстовое содержимое)
**Возвращает:** словарь с информацией о типе, уверенности и необязательных метаданных.
### `diagnose_data(self, sample, schema_name=None, options=None)`
Выполнить комплексную диагностику данных: определить тип и сгенерировать описание.
**Аргументы:**
`sample`: Образец данных для анализа (текстовое содержимое)
`schema_name`: Необязательное имя целевой схемы для генерации описания.
`options`: Необязательные параметры (например, разделитель для CSV).
**Возвращает:** словарь с информацией о типе, уверенности, описании и метаданных.
### `document_embeddings_query(self, text, user, collection, limit=10)`
Запрос фрагментов документов с использованием семантического сходства.
Находит фрагменты документов, содержимое которых семантически похоже на
входной текст, используя векторные представления.
**Аргументы:**
`text`: Текст запроса для семантического поиска.
`user`: Идентификатор пользователя/пространства.
`collection`: Идентификатор коллекции.
`limit`: Максимальное количество результатов (по умолчанию: 10).
**Возвращает:** словарь: Результаты запроса с фрагментами, содержащими chunk_id и score.
**Пример:**
```python
flow = api.flow().id("default")
results = flow.document_embeddings_query(
text="machine learning algorithms",
user="trustgraph",
collection="research-papers",
limit=5
)
# results contains {"chunks": [{"chunk_id": "doc1/p0/c0", "score": 0.95}, ...]}
```
### `document_rag(self, query, user='trustgraph', collection='default', doc_limit=10)`
Выполнение запроса Retrieval-Augmented Generation (RAG), основанного на документах.
RAG на основе документов использует векторные представления для поиска соответствующих фрагментов документов,
а затем генерирует ответ с использованием LLM, используя эти фрагменты в качестве контекста.
**Аргументы:**
`query`: Запрос на естественном языке
`user`: Идентификатор пользователя/пространства (по умолчанию: "trustgraph")
`collection`: Идентификатор коллекции (по умолчанию: "default")
`doc_limit`: Максимальное количество фрагментов документов для извлечения (по умолчанию: 10)
**Возвращает:** str: Сгенерированный ответ, включающий контекст документа
**Пример:**
```python
flow = api.flow().id("default")
response = flow.document_rag(
query="Summarize the key findings",
user="trustgraph",
collection="research-papers",
doc_limit=5
)
print(response)
```
### `embeddings(self, texts)`
Генерирует векторные представления для одного или нескольких текстов.
Преобразует тексты в плотные векторные представления, подходящие для семантического
поиска и сравнения схожести.
**Аргументы:**
`texts`: Список входных текстов для создания векторных представлений.
**Возвращает:** list[list[list[float]]]: Векторные представления, один набор для каждого входного текста.
**Пример:**
```python
flow = api.flow().id("default")
vectors = flow.embeddings(["quantum computing"])
print(f"Embedding dimension: {len(vectors[0][0])}")
```
### `generate_descriptor(self, sample, data_type, schema_name, options=None)`
Создать описание для сопоставления структурированных данных с определенной схемой.
**Аргументы:**
`sample`: Пример данных для анализа (текстовое содержимое)
`data_type`: Тип данных (csv, json, xml)
`schema_name`: Имя целевой схемы для создания описания
`options`: Необязательные параметры (например, разделитель для CSV)
**Возвращает:** словарь с описанием и метаданными
### `graph_embeddings_query(self, text, user, collection, limit=10)`
Запрос сущностей графа знаний с использованием семантического сходства.
Находит сущности в графе знаний, описания которых семантически
схожи с входным текстом, используя векторные представления.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`user`: Идентификатор пользователя/пространства ключей
`collection`: Идентификатор коллекции
`limit`: Максимальное количество результатов (по умолчанию: 10)
**Возвращает:** словарь: Результаты запроса с похожими сущностями
**Пример:**
```python
flow = api.flow().id("default")
results = flow.graph_embeddings_query(
text="physicist who discovered radioactivity",
user="trustgraph",
collection="scientists",
limit=5
)
# results contains {"entities": [{"entity": {...}, "score": 0.95}, ...]}
```
### `graph_rag(self, query, user='trustgraph', collection='default', entity_limit=50, triple_limit=30, max_subgraph_size=150, max_path_length=2)`
Выполнение запроса на основе графов для генерации ответов с использованием извлеченной информации (RAG).
Graph RAG использует структуру графа знаний для поиска релевантного контекста путем
обхода связей между сущностями, а затем генерирует ответ с использованием большой языковой модели (LLM).
**Аргументы:**
`query`: Запрос на естественном языке
`user`: Идентификатор пользователя/пространства (по умолчанию: "trustgraph")
`collection`: Идентификатор коллекции (по умолчанию: "default")
`entity_limit`: Максимальное количество сущностей для извлечения (по умолчанию: 50)
`triple_limit`: Максимальное количество троек на сущность (по умолчанию: 30)
`max_subgraph_size`: Максимальное общее количество троек в подграфе (по умолчанию: 150)
`max_path_length`: Максимальная глубина обхода (по умолчанию: 2)
**Возвращает:** str: Сгенерированный ответ, включающий контекст графа
**Пример:**
```python
flow = api.flow().id("default")
response = flow.graph_rag(
query="Tell me about Marie Curie's discoveries",
user="trustgraph",
collection="scientists",
entity_limit=20,
max_path_length=3
)
print(response)
```
### `load_document(self, document, id=None, metadata=None, user=None, collection=None)`
Загрузка двоичного документа для обработки.
Загрузка документа (PDF, DOCX, изображений и т.д.) для извлечения и
обработки через конвейер документов.
**Аргументы:**
`document`: Содержимое документа в виде байтов
`id`: Необязательный идентификатор документа (генерируется автоматически, если None)
`metadata`: Необязательные метаданные (список троек или объект с методом emit)
`user`: Идентификатор пользователя/пространства ключей (необязательно)
`collection`: Идентификатор коллекции (необязательно)
**Возвращает:** dict: Ответ обработки
**Вызывает исключения:**
`RuntimeError`: Если предоставлены метаданные без идентификатора
**Пример:**
```python
flow = api.flow().id("default")
# Load a PDF document
with open("research.pdf", "rb") as f:
result = flow.load_document(
document=f.read(),
id="research-001",
user="trustgraph",
collection="papers"
)
```
### `load_text(self, text, id=None, metadata=None, charset='utf-8', user=None, collection=None)`
Загрузка текстового контента для обработки.
Загрузка текстового контента для извлечения и обработки через конвейер текста.
**Аргументы:**
`text`: Текстовый контент в виде байтов
`id`: Необязательный идентификатор документа (генерируется автоматически, если None)
`metadata`: Необязательные метаданные (список троек или объект с методом emit)
`charset`: Кодировка символов (по умолчанию: "utf-8")
`user`: Идентификатор пользователя/пространства ключей (необязательно)
`collection`: Идентификатор коллекции (необязательно)
**Возвращает:** dict: Ответ обработки
**Вызывает исключения:**
`RuntimeError`: Если предоставлены метаданные без идентификатора
**Пример:**
```python
flow = api.flow().id("default")
# Load text content
text_content = b"This is the document content..."
result = flow.load_text(
text=text_content,
id="text-001",
charset="utf-8",
user="trustgraph",
collection="documents"
)
```
### `mcp_tool(self, name, parameters={})`
Выполнить инструмент протокола контекста модели (Model Context Protocol, MCP).
Инструменты MCP предоставляют расширяемую функциональность для агентов и рабочих процессов,
позволяя интеграцию с внешними системами и сервисами.
**Аргументы:**
`name`: Имя/идентификатор инструмента
`parameters`: Словарь параметров инструмента (по умолчанию: {})
**Возвращает:** str или dict: Результат выполнения инструмента
**Вызывает исключение:**
`ProtocolException`: Если формат ответа недействителен
**Пример:**
```python
flow = api.flow().id("default")
# Execute a tool
result = flow.mcp_tool(
name="search-web",
parameters={"query": "latest AI news", "limit": 5}
)
```
### `nlp_query(self, question, max_results=100)`
Преобразование вопроса на естественном языке в запрос GraphQL.
**Аргументы:**
`question`: Вопрос на естественном языке
`max_results`: Максимальное количество возвращаемых результатов (по умолчанию: 100)
**Возвращает:** словарь с полями graphql_query, variables, detected_schemas, confidence
### `prompt(self, id, variables)`
Выполнение шаблона запроса с подстановкой переменных.
Шаблоны запросов позволяют использовать многократно шаблоны запросов с динамическими переменными.
Это полезно для обеспечения согласованности при разработке запросов.
**Аргументы:**
`id`: Идентификатор шаблона запроса.
`variables`: Словарь, содержащий соответствия между именами переменных и их значениями.
**Возвращает:** str или dict: Результат отрисованного запроса (текст или структурированный объект).
**Вызывает исключение:**
`ProtocolException`: Если формат ответа недействителен.
**Пример:**
```python
flow = api.flow().id("default")
# Text template
result = flow.prompt(
id="summarize-template",
variables={"topic": "quantum computing", "length": "brief"}
)
# Structured template
result = flow.prompt(
id="extract-entities",
variables={"text": "Marie Curie won Nobel Prizes"}
)
```
### `request(self, path, request)`
Отправьте запрос на создание сервиса для этого экземпляра потока.
**Аргументы:**
`path`: Путь к сервису (например, "service/text-completion")
`request`: Словарь с данными запроса
**Возвращает:** dict: Ответ сервиса
### `row_embeddings_query(self, text, schema_name, user='trustgraph', collection='default', index_name=None, limit=10)`
Запрос данных строк с использованием семантического сходства по индексированным полям.
Находит строки, значения индексированных полей которых семантически схожи с
входным текстом, используя векторные представления. Это обеспечивает нечеткое/семантическое сопоставление
структурированных данных.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`schema_name`: Имя схемы для поиска
`user`: Идентификатор пользователя/пространства ключей (по умолчанию: "trustgraph")
`collection`: Идентификатор коллекции (по умолчанию: "default")
`index_name`: Необязательное имя индекса для фильтрации поиска по определенному индексу
`limit`: Максимальное количество результатов (по умолчанию: 10)
**Возвращает:** dict: Результаты запроса с совпадениями, содержащими index_name, index_value, text и score
**Пример:**
```python
flow = api.flow().id("default")
# Search for customers by name similarity
results = flow.row_embeddings_query(
text="John Smith",
schema_name="customers",
user="trustgraph",
collection="sales",
limit=5
)
# Filter to specific index
results = flow.row_embeddings_query(
text="machine learning engineer",
schema_name="employees",
index_name="job_title",
limit=10
)
```
### `rows_query(self, query, user='trustgraph', collection='default', variables=None, operation_name=None)`
Выполнение запроса GraphQL к структурированным данным в графе знаний.
Запросы структурированных данных с использованием синтаксиса GraphQL, что позволяет выполнять сложные запросы
с фильтрацией, агрегацией и обходом связей.
**Аргументы:**
`query`: Строка запроса GraphQL
`user`: Идентификатор пользователя/пространства (по умолчанию: "trustgraph")
`collection`: Идентификатор коллекции (по умолчанию: "default")
`variables`: Необязательный словарь переменных запроса
`operation_name`: Необязательное имя операции для документов с несколькими операциями
**Возвращает:** dict: Ответ GraphQL с полями 'data', 'errors' и/или 'extensions'
**Вызывает исключение:**
`ProtocolException`: Если возникает системная ошибка
**Пример:**
```python
flow = api.flow().id("default")
# Simple query
query = '''
{
scientists(limit: 10) {
name
field
discoveries
}
}
'''
result = flow.rows_query(
query=query,
user="trustgraph",
collection="scientists"
)
# Query with variables
query = '''
query GetScientist($name: String!) {
scientists(name: $name) {
name
nobelPrizes
}
}
'''
result = flow.rows_query(
query=query,
variables={"name": "Marie Curie"}
)
```
### `schema_selection(self, sample, options=None)`
Выберите соответствующие схемы для образца данных, используя анализ запросов.
**Аргументы:**
`sample`: Образец данных для анализа (текстовое содержимое)
`options`: Необязательные параметры
**Возвращает:** словарь с массивом schema_matches и метаданными
### `structured_query(self, question, user='trustgraph', collection='default')`
Выполните запрос на естественном языке к структурированным данным.
Объединяет преобразование запроса NLP и выполнение GraphQL.
**Аргументы:**
`question`: Запрос на естественном языке
`user`: Идентификатор пространства ключей Cassandra (по умолчанию: "trustgraph")
`collection`: Идентификатор набора данных (по умолчанию: "default")
**Возвращает:** словарь с данными и, возможно, ошибками
### `text_completion(self, system, prompt)`
Выполните текстовое завершение с использованием LLM потока.
**Аргументы:**
`system`: Системная подсказка, определяющая поведение помощника
`prompt`: Подсказка/вопрос пользователя
**Возвращает:** str: Сгенерированный текст ответа
**Пример:**
```python
flow = api.flow().id("default")
response = flow.text_completion(
system="You are a helpful assistant",
prompt="What is quantum computing?"
)
print(response)
```
### `triples_query(self, s=None, p=None, o=None, user=None, collection=None, limit=10000)`
Запрос троек знаний графа с использованием сопоставления с образцом.
Поиск троек RDF, соответствующих заданным шаблонам субъекта, предиката и/или
объекта. Неуказанные параметры действуют как подстановочные знаки.
**Аргументы:**
`s`: URI субъекта (необязательно, используйте None для подстановочного знака)
`p`: URI предиката (необязательно, используйте None для подстановочного знака)
`o`: URI объекта или литерала (необязательно, используйте None для подстановочного знака)
`user`: Идентификатор пользователя/пространства ключей (необязательно)
`collection`: Идентификатор коллекции (необязательно)
`limit`: Максимальное количество возвращаемых результатов (по умолчанию: 10000)
**Возвращает:** list[Triple]: Список объектов Triple, соответствующих условиям.
**Вызывает исключение:**
`RuntimeError`: Если s или p не являются Uri, или o не является Uri/Literal
**Пример:**
```python
from trustgraph.knowledge import Uri, Literal
flow = api.flow().id("default")
# Find all triples about a specific subject
triples = flow.triples_query(
s=Uri("http://example.org/person/marie-curie"),
user="trustgraph",
collection="scientists"
)
# Find all instances of a specific relationship
triples = flow.triples_query(
p=Uri("http://example.org/ontology/discovered"),
limit=100
)
```
--
## `AsyncFlow`
```python
from trustgraph.api import AsyncFlow
```
Клиент для управления асинхронными процессами с использованием REST API.
Предоставляет операции управления процессами на основе async/await, включая перечисление,
запуск, остановку процессов и управление определениями классов процессов. Также предоставляет
доступ к сервисам, связанным с процессами, таким как агенты, RAG и запросы, через REST-интерфейсы без потоковой передачи.
Обратите внимание: для поддержки потоковой передачи используйте AsyncSocketClient.
### Методы
### `__init__(self, url: str, timeout: int, token: str | None) -> None`
Инициализация асинхронного клиента для управления процессами.
**Аргументы:**
`url`: Базовый URL для API TrustGraph.
`timeout`: Время ожидания запроса в секундах.
`token`: Необязательный токен для аутентификации.
### `aclose(self) -> None`
Закрытие асинхронного клиента и освобождение ресурсов.
Обратите внимание: очистка выполняется автоматически менеджерами контекста сессии aiohttp.
Этот метод предоставляется для обеспечения согласованности с другими асинхронными клиентами.
### `delete_class(self, class_name: str)`
Удаление определения класса процесса.
Удаляет шаблон класса процесса из системы. Не влияет на
работающие экземпляры процессов.
**Аргументы:**
`class_name`: Имя класса процесса для удаления.
**Пример:**
```python
async_flow = await api.async_flow()
# Delete a flow class
await async_flow.delete_class("old-flow-class")
```
### `get(self, id: str) -> Dict[str, Any]`
Получение определения потока.
Получает полную конфигурацию потока, включая его имя класса,
описание и параметры.
**Аргументы:**
`id`: Идентификатор потока
**Возвращает:** dict: Объект определения потока
**Пример:**
```python
async_flow = await api.async_flow()
# Get flow definition
flow_def = await async_flow.get("default")
print(f"Flow class: {flow_def.get('class-name')}")
print(f"Description: {flow_def.get('description')}")
```
### `get_class(self, class_name: str) -> Dict[str, Any]`
Получение определения класса потока.
Получает определение шаблона для класса потока, включая его
схему конфигурации и привязки к сервисам.
**Аргументы:**
`class_name`: Имя класса потока
**Возвращает:** dict: Объект определения класса потока
**Пример:**
```python
async_flow = await api.async_flow()
# Get flow class definition
class_def = await async_flow.get_class("default")
print(f"Services: {class_def.get('services')}")
```
### `id(self, flow_id: str)`
Получение экземпляра клиента асинхронного потока.
Возвращает клиент для взаимодействия со службами конкретного потока (агент, RAG, запросы, встраивания и т.д.).
**Аргументы:**
`flow_id`: Идентификатор потока
**Возвращает:** AsyncFlowInstance: Клиент для операций, специфичных для потока
**Пример:**
```python
async_flow = await api.async_flow()
# Get flow instance
flow = async_flow.id("default")
# Use flow services
result = await flow.graph_rag(
query="What is TrustGraph?",
user="trustgraph",
collection="default"
)
```
### `list(self) -> List[str]`
Перечислить все идентификаторы потоков.
Получает идентификаторы всех потоков, которые в настоящее время развернуты в системе.
**Возвращает:** list[str]: Список идентификаторов потоков
**Пример:**
```python
async_flow = await api.async_flow()
# List all flows
flows = await async_flow.list()
print(f"Available flows: {flows}")
```
### `list_classes(self) -> List[str]`
Перечислите все имена классов потоков.
Получает имена всех классов потоков (шаблонов), доступных в системе.
**Возвращает:** list[str]: Список имен классов потоков.
**Пример:**
```python
async_flow = await api.async_flow()
# List available flow classes
classes = await async_flow.list_classes()
print(f"Available flow classes: {classes}")
```
### `put_class(self, class_name: str, definition: Dict[str, Any])`
Создать или обновить определение класса потока.
Хранит шаблон класса потока, который можно использовать для создания экземпляров потоков.
**Аргументы:**
`class_name`: Имя класса потока
`definition`: Объект определения класса потока
**Пример:**
```python
async_flow = await api.async_flow()
# Create a custom flow class
class_def = {
"services": {
"agent": {"module": "agent", "config": {...}},
"graph-rag": {"module": "graph-rag", "config": {...}}
}
}
await async_flow.put_class("custom-flow", class_def)
```
### `request(self, path: str, request_data: Dict[str, Any]) -> Dict[str, Any]`
Выполнить асинхронный HTTP POST-запрос к API шлюза.
Внутренний метод для выполнения аутентифицированных запросов к API TrustGraph.
**Аргументы:**
`path`: Путь к API (относительно базового URL)
`request_data`: Словарь с данными запроса
**Возвращает:** dict: Объект ответа от API
**Вызывает исключения:**
`ProtocolException`: Если HTTP-статус не 200 или ответ не является допустимым JSON
`ApplicationException`: Если API возвращает ответ об ошибке
### `start(self, class_name: str, id: str, description: str, parameters: Dict | None = None)`
Запустить новый экземпляр потока.
Создает и запускает поток из определения класса потока с указанными
параметрами.
**Аргументы:**
`class_name`: Имя класса потока для создания экземпляра
`id`: Идентификатор нового экземпляра потока
`description`: Человекочитаемое описание потока
`parameters`: Необязательные параметры конфигурации для потока
**Пример:**
```python
async_flow = await api.async_flow()
# Start a flow from a class
await async_flow.start(
class_name="default",
id="my-flow",
description="Custom flow instance",
parameters={"model": "claude-3-opus"}
)
```
### `stop(self, id: str)`
Остановить выполняющийся процесс.
Останавливает и удаляет экземпляр процесса, освобождая его ресурсы.
**Аргументы:**
`id`: Идентификатор процесса, который необходимо остановить.
**Пример:**
```python
async_flow = await api.async_flow()
# Stop a flow
await async_flow.stop("my-flow")
```
--
## `AsyncFlowInstance`
```python
from trustgraph.api import AsyncFlowInstance
```
Клиент экземпляра асинхронного потока.
Предоставляет доступ с использованием async/await к сервисам, связанным с потоком, включая агентов,
запросы RAG, эмбеддинги и запросы к графу. Все операции возвращают полные
ответы (без потоковой передачи).
Обратите внимание: для поддержки потоковой передачи используйте AsyncSocketFlowInstance.
### Методы
### `__init__(self, flow: trustgraph.api.async_flow.AsyncFlow, flow_id: str)`
Инициализация асинхронного экземпляра потока.
**Аргументы:**
`flow`: Родительский клиент AsyncFlow
`flow_id`: Идентификатор потока
### `agent(self, question: str, user: str, state: Dict | None = None, group: str | None = None, history: List | None = None, **kwargs: Any) -> Dict[str, Any]`
Выполнение операции агента (без потоковой передачи).
Запускает агента для ответа на вопрос, с необязательным состоянием разговора и
историей. Возвращает полный ответ после завершения обработки агентом.
Обратите внимание: этот метод не поддерживает потоковую передачу. Для получения мыслей и наблюдений агента в режиме реального времени используйте AsyncSocketFlowInstance.agent().
**Аргументы:**
`question`: Вопрос или инструкция пользователя
`user`: Идентификатор пользователя
`state`: Необязательный словарь состояния для контекста разговора
`group`: Необязательный идентификатор группы для управления сеансом
`history`: Необязательный список истории разговоров
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** dict: Полный ответ агента, включая ответ и метаданные
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Execute agent
result = await flow.agent(
question="What is the capital of France?",
user="trustgraph"
)
print(f"Answer: {result.get('response')}")
```
### `document_rag(self, query: str, user: str, collection: str, doc_limit: int = 10, **kwargs: Any) -> str`
Выполнение запроса RAG на основе документов (без потоковой передачи).
Выполняет генерацию с использованием информации, полученной из документов.
Извлекает соответствующие фрагменты документов с помощью семантического поиска, а затем генерирует
ответ, основанный на извлеченных документах. Возвращает полный ответ.
Обратите внимание: этот метод не поддерживает потоковую передачу. Для получения потоковых ответов RAG используйте AsyncSocketFlowInstance.document_rag().
**Аргументы:**
`query`: Текст запроса пользователя
`user`: Идентификатор пользователя
`collection`: Идентификатор коллекции, содержащей документы
`doc_limit`: Максимальное количество фрагментов документов для извлечения (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** str: Полный сгенерированный ответ, основанный на данных документов
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Query documents
response = await flow.document_rag(
query="What does the documentation say about authentication?",
user="trustgraph",
collection="docs",
doc_limit=5
)
print(response)
```
### `embeddings(self, texts: list, **kwargs: Any)`
Генерирует векторные представления для входных текстов.
Преобразует тексты в числовые векторные представления, используя
настроенную модель для создания векторных представлений. Полезно для семантического поиска и
сравнения схожести.
**Аргументы:**
`texts`: Список входных текстов для создания векторных представлений.
`**kwargs`: Дополнительные параметры, специфичные для сервиса.
**Возвращает:** dict: Ответ, содержащий векторные представления.
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Generate embeddings
result = await flow.embeddings(texts=["Sample text to embed"])
vectors = result.get("vectors")
print(f"Embedding dimension: {len(vectors[0][0])}")
```
### `graph_embeddings_query(self, text: str, user: str, collection: str, limit: int = 10, **kwargs: Any)`
Выполняет поиск векторных представлений графов для семантического поиска сущностей.
Выполняет семантический поиск по векторным представлениям сущностей графа для поиска сущностей,
наиболее релевантных входному тексту. Возвращает сущности, отсортированные по степени схожести.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`user`: Идентификатор пользователя
`collection`: Идентификатор коллекции, содержащей векторные представления графа
`limit`: Максимальное количество возвращаемых результатов (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** dict: Ответ, содержащий отсортированные совпадения сущностей с оценками схожести
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Find related entities
results = await flow.graph_embeddings_query(
text="machine learning algorithms",
user="trustgraph",
collection="tech-kb",
limit=5
)
for entity in results.get("entities", []):
print(f"{entity['name']}: {entity['score']}")
```
### `graph_rag(self, query: str, user: str, collection: str, max_subgraph_size: int = 1000, max_subgraph_count: int = 5, max_entity_distance: int = 3, **kwargs: Any) -> str`
Выполнение запроса RAG на основе графа (без потоковой передачи).
Выполняет генерацию с использованием информации, полученной из графа знаний.
Определяет соответствующие сущности и их взаимосвязи, а затем генерирует
ответ, основанный на структуре графа. Возвращает полный ответ.
Обратите внимание: этот метод не поддерживает потоковую передачу. Для получения потоковых ответов RAG используйте AsyncSocketFlowInstance.graph_rag().
**Аргументы:**
`query`: Текст запроса пользователя
`user`: Идентификатор пользователя
`collection`: Идентификатор коллекции, содержащей граф знаний
`max_subgraph_size`: Максимальное количество троек на подграфе (по умолчанию: 1000)
`max_subgraph_count`: Максимальное количество подграфов для извлечения (по умолчанию: 5)
`max_entity_distance`: Максимальное расстояние графа для расширения сущностей (по умолчанию: 3)
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** str: Полный сгенерированный ответ, основанный на данных графа
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Query knowledge graph
response = await flow.graph_rag(
query="What are the relationships between these entities?",
user="trustgraph",
collection="medical-kb",
max_subgraph_count=3
)
print(response)
```
### `request(self, service: str, request_data: Dict[str, Any]) -> Dict[str, Any]`
Отправка запроса к сервису, доступному в рамках текущего потока.
Внутренний метод для вызова сервисов в пределах текущего экземпляра потока.
**Аргументы:**
`service`: Имя сервиса (например, "agent", "graph-rag", "triples")
`request_data`: Тело запроса к сервису
**Возвращает:** dict: Объект ответа от сервиса
**Вызывает исключения:**
`ProtocolException`: Если запрос не удался или ответ недействителен
`ApplicationException`: Если сервис вернул ошибку
### `row_embeddings_query(self, text: str, schema_name: str, user: str = 'trustgraph', collection: str = 'default', index_name: str | None = None, limit: int = 10, **kwargs: Any)`
Запрос векторных представлений строк для семантического поиска в структурированных данных.
Выполняет семантический поиск по векторным представлениям индексов строк для поиска строк, чьи
значения индексированных полей наиболее близки к входному тексту. Обеспечивает
нечеткое/семантическое сопоставление в структурированных данных.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`schema_name`: Имя схемы для поиска
`user`: Идентификатор пользователя (по умолчанию: "trustgraph")
`collection`: Идентификатор коллекции (по умолчанию: "default")
`index_name`: Необязательное имя индекса для фильтрации поиска по конкретному индексу
`limit`: Максимальное количество возвращаемых результатов (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** dict: Ответ, содержащий совпадения с index_name, index_value, text и score
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Search for customers by name similarity
results = await flow.row_embeddings_query(
text="John Smith",
schema_name="customers",
user="trustgraph",
collection="sales",
limit=5
)
for match in results.get("matches", []):
print(f"{match['index_name']}: {match['index_value']} (score: {match['score']})")
```
### `rows_query(self, query: str, user: str, collection: str, variables: Dict | None = None, operation_name: str | None = None, **kwargs: Any)`
Выполнение запроса GraphQL к сохраненным строкам.
Запросы структурированные данные строк, используя синтаксис GraphQL. Поддерживает сложные
запросы с переменными и именованными операциями.
**Аргументы:**
`query`: Строка запроса GraphQL
`user`: Идентификатор пользователя
`collection`: Идентификатор коллекции, содержащей строки
`variables`: Необязательные переменные запроса GraphQL
`operation_name`: Необязательное имя операции для запросов с несколькими операциями
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** dict: Ответ GraphQL с данными и/или ошибками
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Execute GraphQL query
query = '''
query GetUsers($status: String!) {
users(status: $status) {
id
name
email
}
}
'''
result = await flow.rows_query(
query=query,
user="trustgraph",
collection="users",
variables={"status": "active"}
)
for user in result.get("data", {}).get("users", []):
print(f"{user['name']}: {user['email']}")
```
### `text_completion(self, system: str, prompt: str, **kwargs: Any) -> str`
Генерирует текстовое завершение (не в режиме потоковой передачи).
Генерирует текстовый ответ от LLM на основе системной подсказки и пользовательской подсказки.
Возвращает полный текст ответа.
Обратите внимание: этот метод не поддерживает потоковую передачу. Для генерации текста в режиме потоковой передачи используйте AsyncSocketFlowInstance.text_completion().
**Аргументы:**
`system`: Системная подсказка, определяющая поведение LLM.
`prompt`: Пользовательская подсказка или вопрос.
`**kwargs`: Дополнительные параметры, специфичные для сервиса.
**Возвращает:** str: Полный сгенерированный текст ответа.
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Generate text
response = await flow.text_completion(
system="You are a helpful assistant.",
prompt="Explain quantum computing in simple terms."
)
print(response)
```
### `triples_query(self, s=None, p=None, o=None, user=None, collection=None, limit=100, **kwargs: Any)`
Запрос RDF-тройств с использованием сопоставления с образцом.
Поиск тройств, соответствующих указанным шаблонам субъекта, предиката и/или
объекта. Шаблоны используют "None" в качестве подстановочного знака для сопоставления с любым значением.
**Аргументы:**
`s`: Шаблон субъекта (None для подстановочного знака)
`p`: Шаблон предиката (None для подстановочного знака)
`o`: Шаблон объекта (None для подстановочного знака)
`user`: Идентификатор пользователя (None для всех пользователей)
`collection`: Идентификатор коллекции (None для всех коллекций)
`limit`: Максимальное количество тройств для возврата (по умолчанию: 100)
`**kwargs`: Дополнительные параметры, специфичные для сервиса
**Возвращает:** dict: Ответ, содержащий соответствующие тройства
**Пример:**
```python
async_flow = await api.async_flow()
flow = async_flow.id("default")
# Find all triples with a specific predicate
results = await flow.triples_query(
p="knows",
user="trustgraph",
collection="social",
limit=50
)
for triple in results.get("triples", []):
print(f"{triple['s']} knows {triple['o']}")
```
--
## `SocketClient`
```python
from trustgraph.api import SocketClient
```
Синхронный WebSocket-клиент для потоковых операций.
Предоставляет синхронный интерфейс для сервисов TrustGraph, основанных на WebSocket,
обертывая асинхронную библиотеку websockets с использованием синхронных генераторов для удобства использования.
Поддерживает потоковые ответы от агентов, запросы RAG и текстовые подсказки.
Обратите внимание: это синхронная обертка вокруг асинхронных операций WebSocket. Для
полной асинхронной поддержки используйте AsyncSocketClient.
### Методы
### `__init__(self, url: str, timeout: int, token: str | None) -> None`
Инициализация синхронного WebSocket-клиента.
**Аргументы:**
`url`: Базовый URL для API TrustGraph (HTTP/HTTPS будет преобразован в WS/WSS)
`timeout`: Время ожидания WebSocket в секундах
`token`: Необязательный токен для аутентификации
### `close(self) -> None`
Закрытие WebSocket-соединений.
Обратите внимание: очистка выполняется автоматически с помощью менеджеров контекста в асинхронном коде.
### `flow(self, flow_id: str) -> 'SocketFlowInstance'`
Получение экземпляра потока для потоковых операций WebSocket.
**Аргументы:**
`flow_id`: Идентификатор потока
**Возвращает:** SocketFlowInstance: Экземпляр потока с методами потоковой передачи
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Stream agent responses
for chunk in flow.agent(question="Hello", user="trustgraph", streaming=True):
print(chunk.content, end='', flush=True)
```
--
## `SocketFlowInstance`
```python
from trustgraph.api import SocketFlowInstance
```
Экземпляр потока WebSocket для операций потоковой передачи.
Предоставляет тот же интерфейс, что и FlowInstance REST, но с поддержкой потоковой передачи на основе WebSocket
для получения ответов в реальном времени. Все методы поддерживают необязательный
параметр `streaming` для включения постепенной доставки результатов.
### Методы
### `__init__(self, client: trustgraph.api.socket_client.SocketClient, flow_id: str) -> None`
Инициализация экземпляра потока сокета.
**Аргументы:**
`client`: Родительский SocketClient
`flow_id`: Идентификатор потока
### `agent(self, question: str, user: str, state: Dict[str, Any] | None = None, group: str | None = None, history: List[Dict[str, Any]] | None = None, streaming: bool = False, **kwargs: Any) -> Dict[str, Any] | Iterator[trustgraph.api.types.StreamingChunk]`
Выполнение операции агента с поддержкой потоковой передачи.
Агенты могут выполнять многоэтапные рассуждения с использованием инструментов. Этот метод всегда
возвращает потоковые фрагменты (мысли, наблюдения, ответы), даже когда
streaming=False, чтобы показать процесс рассуждений агента.
**Аргументы:**
`question`: Вопрос или инструкция пользователя
`user`: Идентификатор пользователя
`state`: Необязательный словарь состояния для разговоров с состоянием
`group`: Необязательный идентификатор группы для многопользовательских контекстов
`history`: Необязательная история разговоров в виде списка словарей сообщений
`streaming`: Включить режим потоковой передачи (по умолчанию: False)
`**kwargs`: Дополнительные параметры, передаваемые службе агента
**Возвращает:** Iterator[StreamingChunk]: Поток мыслей, наблюдений и ответов агента
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Stream agent reasoning
for chunk in flow.agent(
question="What is quantum computing?",
user="trustgraph",
streaming=True
):
if isinstance(chunk, AgentThought):
print(f"[Thinking] {chunk.content}")
elif isinstance(chunk, AgentObservation):
print(f"[Observation] {chunk.content}")
elif isinstance(chunk, AgentAnswer):
print(f"[Answer] {chunk.content}")
```
### `agent_explain(self, question: str, user: str, collection: str, state: Dict[str, Any] | None = None, group: str | None = None, history: List[Dict[str, Any]] | None = None, **kwargs: Any) -> Iterator[trustgraph.api.types.StreamingChunk | trustgraph.api.types.ProvenanceEvent]`
Выполнение операции агента с поддержкой объяснимости.
Передает как фрагменты контента (AgentThought, AgentObservation, AgentAnswer),
так и события, связанные с происхождением (ProvenanceEvent). События, связанные с происхождением, содержат URI,
которые можно получить с помощью ExplainabilityClient для получения подробной информации
о процессе рассуждений агента.
Трассировка агента состоит из:
Сессия: Исходный вопрос и метаданные сессии.
Итерации: Каждый цикл мыслей/действий/наблюдений.
Заключение: Окончательный ответ.
**Аргументы:**
`question`: Вопрос или инструкция пользователя.
`user`: Идентификатор пользователя.
`collection`: Идентификатор коллекции для хранения данных о происхождении.
`state`: Необязательный словарь состояния для разговоров с сохранением состояния.
`group`: Необязательный идентификатор группы для многопользовательских контекстов.
`history`: Необязательная история разговоров в виде списка словарей сообщений.
`**kwargs`: Дополнительные параметры, передаваемые службе агента.
`Yields`:
`Union[StreamingChunk, ProvenanceEvent]`: Фрагменты агента и события, связанные с происхождением.
**Пример:**
```python
from trustgraph.api import Api, ExplainabilityClient, ProvenanceEvent
from trustgraph.api import AgentThought, AgentObservation, AgentAnswer
socket = api.socket()
flow = socket.flow("default")
explain_client = ExplainabilityClient(flow)
provenance_ids = []
for item in flow.agent_explain(
question="What is the capital of France?",
user="trustgraph",
collection="default"
):
if isinstance(item, AgentThought):
print(f"[Thought] {item.content}")
elif isinstance(item, AgentObservation):
print(f"[Observation] {item.content}")
elif isinstance(item, AgentAnswer):
print(f"[Answer] {item.content}")
elif isinstance(item, ProvenanceEvent):
provenance_ids.append(item.explain_id)
# Fetch session trace after completion
if provenance_ids:
trace = explain_client.fetch_agent_trace(
provenance_ids[0], # Session URI is first
graph="urn:graph:retrieval",
user="trustgraph",
collection="default"
)
```
### `document_embeddings_query(self, text: str, user: str, collection: str, limit: int = 10, **kwargs: Any) -> Dict[str, Any]`
Запрос фрагментов документов с использованием семантического сходства.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`user`: Идентификатор пользователя/пространства ключей
`collection`: Идентификатор коллекции
`limit`: Максимальное количество результатов (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, передаваемые сервису
**Возвращает:** dict: Результаты запроса с идентификаторами фрагментов соответствующих фрагментов документов
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
results = flow.document_embeddings_query(
text="machine learning algorithms",
user="trustgraph",
collection="research-papers",
limit=5
)
# results contains {"chunks": [{"chunk_id": "...", "score": 0.95}, ...]}
```
### `document_rag(self, query: str, user: str, collection: str, doc_limit: int = 10, streaming: bool = False, **kwargs: Any) -> str | Iterator[str]`
Выполнение запроса RAG на основе документов с возможностью опциональной потоковой передачи.
Использует векторные представления для поиска релевантных фрагментов документов, а затем генерирует
ответ с использованием LLM. Режим потоковой передачи предоставляет результаты постепенно.
**Аргументы:**
`query`: Запрос на естественном языке
`user`: Идентификатор пользователя/пространства
`collection`: Идентификатор коллекции
`doc_limit`: Максимальное количество фрагментов документов для извлечения (по умолчанию: 10)
`streaming`: Включить режим потоковой передачи (по умолчанию: False)
`**kwargs`: Дополнительные параметры, передаваемые службе
**Возвращает:** Union[str, Iterator[str]]: Полный ответ или поток текстовых фрагментов
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Streaming document RAG
for chunk in flow.document_rag(
query="Summarize the key findings",
user="trustgraph",
collection="research-papers",
doc_limit=5,
streaming=True
):
print(chunk, end='', flush=True)
```
### `document_rag_explain(self, query: str, user: str, collection: str, doc_limit: int = 10, **kwargs: Any) -> Iterator[trustgraph.api.types.RAGChunk | trustgraph.api.types.ProvenanceEvent]`
Выполнение запроса RAG на основе документов с поддержкой объяснимости.
Передает как фрагменты контента (RAGChunk), так и события, связанные с происхождением (ProvenanceEvent).
События, связанные с происхождением, содержат URI, которые можно получить с помощью ExplainabilityClient,
чтобы получить подробную информацию о том, как был сгенерирован ответ.
Трассировка RAG для документа состоит из:
Вопрос: Запрос пользователя
Исследование: Фрагменты, извлеченные из хранилища документов (chunk_count)
Синтез: Сгенерированный ответ
**Аргументы:**
`query`: Запрос на естественном языке
`user`: Идентификатор пользователя/пространства ключей
`collection`: Идентификатор коллекции
`doc_limit`: Максимальное количество фрагментов документов для извлечения (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, передаваемые службе
`Yields`:
`Union[RAGChunk, ProvenanceEvent]`: Фрагменты контента и события, связанные с происхождением
**Пример:**
```python
from trustgraph.api import Api, ExplainabilityClient, RAGChunk, ProvenanceEvent
socket = api.socket()
flow = socket.flow("default")
explain_client = ExplainabilityClient(flow)
for item in flow.document_rag_explain(
query="Summarize the key findings",
user="trustgraph",
collection="research-papers",
doc_limit=5
):
if isinstance(item, RAGChunk):
print(item.content, end='', flush=True)
elif isinstance(item, ProvenanceEvent):
# Fetch entity details
entity = explain_client.fetch_entity(
item.explain_id,
graph=item.explain_graph,
user="trustgraph",
collection="research-papers"
)
print(f"Event: {entity}", file=sys.stderr)
```
### `embeddings(self, texts: list, **kwargs: Any) -> Dict[str, Any]`
Создание векторных представлений для одного или нескольких текстов.
**Аргументы:**
`texts`: Список входных текстов для создания векторных представлений.
`**kwargs`: Дополнительные параметры, передаваемые сервису.
**Возвращает:** dict: Ответ, содержащий векторы (один набор для каждого входного текста).
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
result = flow.embeddings(["quantum computing"])
vectors = result.get("vectors", [])
```
### `graph_embeddings_query(self, text: str, user: str, collection: str, limit: int = 10, **kwargs: Any) -> Dict[str, Any]`
Запрос сущностей графа знаний с использованием семантического сходства.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`user`: Идентификатор пользователя/пространства
`collection`: Идентификатор коллекции
`limit`: Максимальное количество результатов (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, передаваемые сервису
**Возвращает:** dict: Результаты запроса с похожими сущностями
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
results = flow.graph_embeddings_query(
text="physicist who discovered radioactivity",
user="trustgraph",
collection="scientists",
limit=5
)
```
### `graph_rag(self, query: str, user: str, collection: str, max_subgraph_size: int = 1000, max_subgraph_count: int = 5, max_entity_distance: int = 3, streaming: bool = False, **kwargs: Any) -> str | Iterator[str]`
Выполнение запроса RAG на основе графа с возможностью потоковой передачи.
Использует структуру графа знаний для поиска релевантного контекста, а затем генерирует
ответ с использованием LLM. Режим потоковой передачи предоставляет результаты постепенно.
**Аргументы:**
`query`: Запрос на естественном языке
`user`: Идентификатор пользователя/пространства
`collection`: Идентификатор коллекции
`max_subgraph_size`: Максимальное общее количество троек в подграфе (по умолчанию: 1000)
`max_subgraph_count`: Максимальное количество подграфов (по умолчанию: 5)
`max_entity_distance`: Максимальная глубина обхода (по умолчанию: 3)
`streaming`: Включить режим потоковой передачи (по умолчанию: False)
`**kwargs`: Дополнительные параметры, передаваемые службе
**Возвращает:** Union[str, Iterator[str]]: Полный ответ или поток текстовых фрагментов
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Streaming graph RAG
for chunk in flow.graph_rag(
query="Tell me about Marie Curie",
user="trustgraph",
collection="scientists",
streaming=True
):
print(chunk, end='', flush=True)
```
### `graph_rag_explain(self, query: str, user: str, collection: str, max_subgraph_size: int = 1000, max_subgraph_count: int = 5, max_entity_distance: int = 3, **kwargs: Any) -> Iterator[trustgraph.api.types.RAGChunk | trustgraph.api.types.ProvenanceEvent]`
Выполнение запроса RAG на основе графов с поддержкой объяснимости.
Передает как фрагменты контента (RAGChunk), так и события, связанные с происхождением (ProvenanceEvent).
События, связанные с происхождением, содержат URI, которые можно получить с помощью ExplainabilityClient,
чтобы получить подробную информацию о том, как был сгенерирован ответ.
**Аргументы:**
`query`: Запрос на естественном языке
`user`: Идентификатор пользователя/пространства
`collection`: Идентификатор коллекции
`max_subgraph_size`: Максимальное общее количество троек в подграфе (по умолчанию: 1000)
`max_subgraph_count`: Максимальное количество подграфов (по умолчанию: 5)
`max_entity_distance`: Максимальная глубина обхода (по умолчанию: 3)
`**kwargs`: Дополнительные параметры, передаваемые службе
`Yields`:
`Union[RAGChunk, ProvenanceEvent]`: Фрагменты контента и события, связанные с происхождением
**Пример:**
```python
from trustgraph.api import Api, ExplainabilityClient, RAGChunk, ProvenanceEvent
socket = api.socket()
flow = socket.flow("default")
explain_client = ExplainabilityClient(flow)
provenance_ids = []
response_text = ""
for item in flow.graph_rag_explain(
query="Tell me about Marie Curie",
user="trustgraph",
collection="scientists"
):
if isinstance(item, RAGChunk):
response_text += item.content
print(item.content, end='', flush=True)
elif isinstance(item, ProvenanceEvent):
provenance_ids.append(item.provenance_id)
# Fetch explainability details
for prov_id in provenance_ids:
entity = explain_client.fetch_entity(
prov_id,
graph="urn:graph:retrieval",
user="trustgraph",
collection="scientists"
)
print(f"Entity: {entity}")
```
### `mcp_tool(self, name: str, parameters: Dict[str, Any], **kwargs: Any) -> Dict[str, Any]`
Запустить инструмент протокола контекста модели (MCP).
**Аргументы:**
`name`: Имя/идентификатор инструмента
`parameters`: Словарь параметров инструмента
`**kwargs`: Дополнительные параметры, передаваемые сервису
**Возвращает:** dict: Результат выполнения инструмента
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
result = flow.mcp_tool(
name="search-web",
parameters={"query": "latest AI news", "limit": 5}
)
```
### `prompt(self, id: str, variables: Dict[str, str], streaming: bool = False, **kwargs: Any) -> str | Iterator[str]`
Выполнение шаблона запроса с возможностью потоковой передачи.
**Аргументы:**
`id`: Идентификатор шаблона запроса
`variables`: Словарь, содержащий соответствия между именами переменных и их значениями
`streaming`: Включить режим потоковой передачи (по умолчанию: False)
`**kwargs`: Дополнительные параметры, передаваемые службе
**Возвращает:** Union[str, Iterator[str]]: Полный ответ или поток текстовых фрагментов
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Streaming prompt execution
for chunk in flow.prompt(
id="summarize-template",
variables={"topic": "quantum computing", "length": "brief"},
streaming=True
):
print(chunk, end='', flush=True)
```
### `row_embeddings_query(self, text: str, schema_name: str, user: str = 'trustgraph', collection: str = 'default', index_name: str | None = None, limit: int = 10, **kwargs: Any) -> Dict[str, Any]`
Запрос данных строк с использованием семантического сходства по индексированным полям.
Находит строки, значения индексированных полей которых семантически схожи с
входным текстом, используя векторные представления. Это обеспечивает нечеткое/семантическое сопоставление
структурированных данных.
**Аргументы:**
`text`: Текст запроса для семантического поиска
`schema_name`: Имя схемы для поиска
`user`: Идентификатор пользователя/пространства ключей (по умолчанию: "trustgraph")
`collection`: Идентификатор коллекции (по умолчанию: "default")
`index_name`: Необязательное имя индекса для фильтрации поиска по определенному индексу
`limit`: Максимальное количество результатов (по умолчанию: 10)
`**kwargs`: Дополнительные параметры, передаваемые службе
**Возвращает:** dict: Результаты запроса, содержащие соответствия, включая index_name, index_value, text и score
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Search for customers by name similarity
results = flow.row_embeddings_query(
text="John Smith",
schema_name="customers",
user="trustgraph",
collection="sales",
limit=5
)
# Filter to specific index
results = flow.row_embeddings_query(
text="machine learning engineer",
schema_name="employees",
index_name="job_title",
limit=10
)
```
### `rows_query(self, query: str, user: str, collection: str, variables: Dict[str, Any] | None = None, operation_name: str | None = None, **kwargs: Any) -> Dict[str, Any]`
Выполнение запроса GraphQL к структурированным строкам.
**Аргументы:**
`query`: Строка запроса GraphQL
`user`: Идентификатор пользователя/пространства ключей
`collection`: Идентификатор коллекции
`variables`: Необязательный словарь переменных запроса
`operation_name`: Необязательное имя операции для документов с несколькими операциями
`**kwargs`: Дополнительные параметры, передаваемые службе
**Возвращает:** dict: Ответ GraphQL с данными, ошибками и/или расширениями
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
query = '''
{
scientists(limit: 10) {
name
field
discoveries
}
}
'''
result = flow.rows_query(
query=query,
user="trustgraph",
collection="scientists"
)
```
### `text_completion(self, system: str, prompt: str, streaming: bool = False, **kwargs) -> str | Iterator[str]`
Выполнить завершение текста с возможностью потоковой передачи.
**Аргументы:**
`system`: Системная подсказка, определяющая поведение ассистента.
`prompt`: Подсказка/вопрос пользователя.
`streaming`: Включить режим потоковой передачи (по умолчанию: False).
`**kwargs`: Дополнительные параметры, передаваемые сервису.
**Возвращает:** Union[str, Iterator[str]]: Полный ответ или поток текстовых фрагментов.
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Non-streaming
response = flow.text_completion(
system="You are helpful",
prompt="Explain quantum computing",
streaming=False
)
print(response)
# Streaming
for chunk in flow.text_completion(
system="You are helpful",
prompt="Explain quantum computing",
streaming=True
):
print(chunk, end='', flush=True)
```
### `triples_query(self, s: str | Dict[str, Any] | None = None, p: str | Dict[str, Any] | None = None, o: str | Dict[str, Any] | None = None, g: str | None = None, user: str | None = None, collection: str | None = None, limit: int = 100, **kwargs: Any) -> List[Dict[str, Any]]`
Запрос троек графа знаний с использованием сопоставления с образцом.
**Аргументы:**
`s`: Фильтр по субъекту - строка URI, словарь терминов или None для подстановки
`p`: Фильтр по предикату - строка URI, словарь терминов или None для подстановки
`o`: Фильтр по объекту - строка URI/литерала, словарь терминов или None для подстановки
`g`: Фильтр по именованному графу - строка URI или None для всех графов
`user`: Идентификатор пользователя/пространства ключей (необязательно)
`collection`: Идентификатор коллекции (необязательно)
`limit`: Максимальное количество возвращаемых результатов (по умолчанию: 100)
`**kwargs`: Дополнительные параметры, передаваемые сервису
**Возвращает:** List[Dict]: Список соответствующих троек в формате передачи данных
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
# Find all triples about a specific subject
triples = flow.triples_query(
s="http://example.org/person/marie-curie",
user="trustgraph",
collection="scientists"
)
# Query with named graph filter
triples = flow.triples_query(
s="urn:trustgraph:session:abc123",
g="urn:graph:retrieval",
user="trustgraph",
collection="default"
)
```
### `triples_query_stream(self, s: str | Dict[str, Any] | None = None, p: str | Dict[str, Any] | None = None, o: str | Dict[str, Any] | None = None, g: str | None = None, user: str | None = None, collection: str | None = None, limit: int = 100, batch_size: int = 20, **kwargs: Any) -> Iterator[List[Dict[str, Any]]]`
Запрос троек знаний с использованием потоковых пакетов.
Возвращает пакеты троек по мере их поступления, что сокращает время получения первого результата
и объем используемой памяти для больших наборов результатов.
**Аргументы:**
`s`: Фильтр по субъекту - URI строка, словарь терминов или None для подстановки
`p`: Фильтр по предикату - URI строка, словарь терминов или None для подстановки
`o`: Фильтр по объекту - URI/строка литерала, словарь терминов или None для подстановки
`g`: Фильтр по именованному графу - URI строка или None для всех графов
`user`: Идентификатор пользователя/пространства ключей (необязательно)
`collection`: Идентификатор коллекции (необязательно)
`limit`: Максимальное количество возвращаемых результатов (по умолчанию: 100)
`batch_size`: Количество троек в пакете (по умолчанию: 20)
`**kwargs`: Дополнительные параметры, передаваемые сервису
`Yields`:
`List[Dict]`: Пакеты троек в формате передачи данных
**Пример:**
```python
socket = api.socket()
flow = socket.flow("default")
for batch in flow.triples_query_stream(
user="trustgraph",
collection="default"
):
for triple in batch:
print(triple["s"], triple["p"], triple["o"])
```
--
## `AsyncSocketClient`
```python
from trustgraph.api import AsyncSocketClient
```
Асинхронный WebSocket клиент
### Методы
### `__init__(self, url: str, timeout: int, token: str | None)`
Инициализация объекта `self`. См. `help(type(self))` для получения точного определения.
### `aclose(self)`
Закрытие WebSocket соединения
### `flow(self, flow_id: str)`
Получение асинхронной реализации для операций с WebSocket
--
## `AsyncSocketFlowInstance`
```python
from trustgraph.api import AsyncSocketFlowInstance
```
Экземпляр асинхронного потока WebSocket.
### Методы
### `__init__(self, client: trustgraph.api.async_socket_client.AsyncSocketClient, flow_id: str)`
Инициализация объекта `self`. См. `help(type(self))` для получения точного определения.
### `agent(self, question: str, user: str, state: Dict[str, Any] | None = None, group: str | None = None, history: list | None = None, streaming: bool = False, **kwargs) -> Dict[str, Any] | AsyncIterator`
Агент с опциональной потоковой передачей.
### `document_rag(self, query: str, user: str, collection: str, doc_limit: int = 10, streaming: bool = False, **kwargs)`
Документирование RAG с опциональной потоковой передачей.
### `embeddings(self, texts: list, **kwargs)`
Генерация текстовых векторных представлений.
### `graph_embeddings_query(self, text: str, user: str, collection: str, limit: int = 10, **kwargs)`
Запрос векторных представлений графа для семантического поиска.
### `graph_rag(self, query: str, user: str, collection: str, max_subgraph_size: int = 1000, max_subgraph_count: int = 5, max_entity_distance: int = 3, streaming: bool = False, **kwargs)`
Граф RAG с опциональной потоковой передачей.
### `mcp_tool(self, name: str, parameters: Dict[str, Any], **kwargs)`
Выполнение инструмента MCP.
### `prompt(self, id: str, variables: Dict[str, str], streaming: bool = False, **kwargs)`
Выполнение запроса с опциональной потоковой передачей.
### `row_embeddings_query(self, text: str, schema_name: str, user: str = 'trustgraph', collection: str = 'default', index_name: str | None = None, limit: int = 10, **kwargs)`
Запрос векторных представлений строк для семантического поиска структурированных данных.
### `rows_query(self, query: str, user: str, collection: str, variables: Dict | None = None, operation_name: str | None = None, **kwargs)`
Запрос GraphQL для структурированных строк.
### `text_completion(self, system: str, prompt: str, streaming: bool = False, **kwargs)`
Автозаполнение текста с опциональной потоковой передачей.
### `triples_query(self, s=None, p=None, o=None, user=None, collection=None, limit=100, **kwargs)`
Запрос шаблона триплетов.
--
### `build_term(value: Any, term_type: str | None = None, datatype: str | None = None, language: str | None = None) -> Dict[str, Any] | None`
Создание словаря Term в формате двоичных данных из значения.
Правила автоматического определения (когда `term_type` равен None):
Уже является словарем с ключом 't' -> возвращается как есть (уже является Term).
Начинается с http://, https://, urn: -> IRI.
Ограничено символами < (например, <http://...>) -> IRI (символы угловых скобок удаляются).
Все остальное -> литерал.
**Аргументы:**
`value`: Значение Term (строка, словарь или None).
`term_type`: Один из вариантов: 'iri', 'literal' или None для автоматического определения.
`datatype`: Тип данных для литеральных объектов (например, xsd:integer).
`language`: Языковой тег для литеральных объектов (например, en).
**Возвращает:** dict: Словарь Term в формате двоичных данных или None, если значение равно None.
--
## `BulkClient`
```python
from trustgraph.api import BulkClient
```
Клиент для синхронных массовых операций импорта/экспорта.
Обеспечивает эффективную массовую передачу данных через WebSocket для больших наборов данных.
Оборачивает асинхронные операции WebSocket в синхронные генераторы для удобства использования.
Примечание: Для полной поддержки асинхронности используйте AsyncBulkClient.
### Методы
### `__init__(self, url: str, timeout: int, token: str | None) -> None`
Инициализация синхронного клиента для массовых операций.
**Аргументы:**
`url`: Базовый URL для API TrustGraph (HTTP/HTTPS будут преобразованы в WS/WSS)
`timeout`: Время ожидания WebSocket в секундах
`token`: Необязательный токен для аутентификации
### `close(self) -> None`
Закрытие соединений
### `export_document_embeddings(self, flow: str, **kwargs: Any) -> Iterator[Dict[str, Any]]`
Массовый экспорт векторных представлений документов из потока.
Эффективно загружает все векторные представления фрагментов документов через потоковую передачу WebSocket.
**Аргументы:**
`flow`: Идентификатор потока
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Возвращает:** Iterator[Dict[str, Any]]: Поток словарей векторных представлений
**Пример:**
```python
bulk = api.bulk()
# Export and process document embeddings
for embedding in bulk.export_document_embeddings(flow="default"):
chunk_id = embedding.get("chunk_id")
vector = embedding.get("embedding")
print(f"{chunk_id}: {len(vector)} dimensions")
```
### `export_entity_contexts(self, flow: str, **kwargs: Any) -> Iterator[Dict[str, Any]]`
Массовый экспорт контекстов сущностей из потока.
Эффективно загружает всю информацию о контексте сущностей через потоковую передачу WebSocket.
**Аргументы:**
`flow`: Идентификатор потока
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Возвращает:** Iterator[Dict[str, Any]]: Поток словарей контекста
**Пример:**
```python
bulk = api.bulk()
# Export and process entity contexts
for context in bulk.export_entity_contexts(flow="default"):
entity = context.get("entity")
text = context.get("context")
print(f"{entity}: {text[:100]}...")
```
### `export_graph_embeddings(self, flow: str, **kwargs: Any) -> Iterator[Dict[str, Any]]`
Массовый экспорт векторных представлений графов из потока.
Эффективно загружает все векторные представления сущностей графа через потоковую передачу WebSocket.
**Аргументы:**
`flow`: Идентификатор потока
`**kwargs`: Дополнительные параметры (зарезервировано для будущих версий)
**Возвращает:** Iterator[Dict[str, Any]]: Поток словарей векторных представлений
**Пример:**
```python
bulk = api.bulk()
# Export and process embeddings
for embedding in bulk.export_graph_embeddings(flow="default"):
entity = embedding.get("entity")
vector = embedding.get("embedding")
print(f"{entity}: {len(vector)} dimensions")
```
### `export_triples(self, flow: str, **kwargs: Any) -> Iterator[trustgraph.api.types.Triple]`
Массовый экспорт RDF-тройств из потока.
Эффективно загружает все тройства через потоковую передачу WebSocket.
**Аргументы:**
`flow`: Идентификатор потока
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Возвращает:** Iterator[Triple]: Поток объектов Triple
**Пример:**
```python
bulk = api.bulk()
# Export and process triples
for triple in bulk.export_triples(flow="default"):
print(f"{triple.s} -> {triple.p} -> {triple.o}")
```
### `import_document_embeddings(self, flow: str, embeddings: Iterator[Dict[str, Any]], **kwargs: Any) -> None`
Импорт большого количества векторных представлений документов в поток.
Эффективная загрузка векторных представлений фрагментов документов через потоковую передачу WebSocket
для использования в запросах RAG (Retrieval-Augmented Generation) к документам.
**Аргументы:**
`flow`: Идентификатор потока
`embeddings`: Итератор, возвращающий словари векторных представлений
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Пример:**
```python
bulk = api.bulk()
# Generate document embeddings to import
def doc_embedding_generator():
yield {"chunk_id": "doc1/p0/c0", "embedding": [0.1, 0.2, ...]}
yield {"chunk_id": "doc1/p0/c1", "embedding": [0.3, 0.4, ...]}
# ... more embeddings
bulk.import_document_embeddings(
flow="default",
embeddings=doc_embedding_generator()
)
```
### `import_entity_contexts(self, flow: str, contexts: Iterator[Dict[str, Any]], metadata: Dict[str, Any] | None = None, batch_size: int = 100, **kwargs: Any) -> None`
Импорт большого количества сущностей в контекст потока.
Эффективная загрузка информации о контексте сущностей через потоковую передачу WebSocket.
Контексты сущностей предоставляют дополнительный текстовый контекст о сущностях графа
для повышения производительности RAG.
**Аргументы:**
`flow`: Идентификатор потока
`contexts`: Итератор, возвращающий словари контекста
`metadata`: Словарь метаданных с id, метаданными, пользователем, коллекцией
`batch_size`: Количество контекстов в пакете (по умолчанию 100)
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Пример:**
```python
bulk = api.bulk()
# Generate entity contexts to import
def context_generator():
yield {"entity": {"v": "entity1", "e": True}, "context": "Description..."}
yield {"entity": {"v": "entity2", "e": True}, "context": "Description..."}
# ... more contexts
bulk.import_entity_contexts(
flow="default",
contexts=context_generator(),
metadata={"id": "doc1", "metadata": [], "user": "user1", "collection": "default"}
)
```
### `import_graph_embeddings(self, flow: str, embeddings: Iterator[Dict[str, Any]], **kwargs: Any) -> None`
Импорт графовых представлений в поток.
Эффективная загрузка представлений графовых сущностей через потоковую передачу WebSocket.
**Аргументы:**
`flow`: Идентификатор потока
`embeddings`: Итератор, возвращающий словари представлений
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Пример:**
```python
bulk = api.bulk()
# Generate embeddings to import
def embedding_generator():
yield {"entity": "entity1", "embedding": [0.1, 0.2, ...]}
yield {"entity": "entity2", "embedding": [0.3, 0.4, ...]}
# ... more embeddings
bulk.import_graph_embeddings(
flow="default",
embeddings=embedding_generator()
)
```
### `import_rows(self, flow: str, rows: Iterator[Dict[str, Any]], **kwargs: Any) -> None`
Импорт структурированных строк в поток.
Эффективная загрузка структурированных данных в виде строк через потоковую передачу WebSocket
для использования в запросах GraphQL.
**Аргументы:**
`flow`: Идентификатор потока
`rows`: Итератор, возвращающий словари строк
`**kwargs`: Дополнительные параметры (зарезервированы для будущего использования)
**Пример:**
```python
bulk = api.bulk()
# Generate rows to import
def row_generator():
yield {"id": "row1", "name": "Row 1", "value": 100}
yield {"id": "row2", "name": "Row 2", "value": 200}
# ... more rows
bulk.import_rows(
flow="default",
rows=row_generator()
)
```
### `import_triples(self, flow: str, triples: Iterator[trustgraph.api.types.Triple], metadata: Dict[str, Any] | None = None, batch_size: int = 100, **kwargs: Any) -> None`
Импорт большого количества RDF-тройств в поток.
Эффективно загружает большое количество тройств через потоковую передачу WebSocket.
**Аргументы:**
`flow`: Идентификатор потока
`triples`: Итератор, возвращающий объекты Triple
`metadata`: Словарь метаданных с id, метаданными, пользователем, коллекцией
`batch_size`: Количество тройств в пакете (по умолчанию 100)
`**kwargs`: Дополнительные параметры (зарезервировано для будущего использования)
**Пример:**
```python
from trustgraph.api import Triple
bulk = api.bulk()
# Generate triples to import
def triple_generator():
yield Triple(s="subj1", p="pred", o="obj1")
yield Triple(s="subj2", p="pred", o="obj2")
# ... more triples
# Import triples
bulk.import_triples(
flow="default",
triples=triple_generator(),
metadata={"id": "doc1", "metadata": [], "user": "user1", "collection": "default"}
)
```
--
## `AsyncBulkClient`
```python
from trustgraph.api import AsyncBulkClient
```
Клиент для асинхронных пакетных операций.
### Методы
### `__init__(self, url: str, timeout: int, token: str | None) -> None`
Инициализация объекта `self`. См. `help(type(self))` для получения точного определения.
### `aclose(self) -> None`
Закрытие соединений.
### `export_document_embeddings(self, flow: str, **kwargs: Any) -> AsyncIterator[Dict[str, Any]]`
Пакетный экспорт векторных представлений документов через WebSocket.
### `export_entity_contexts(self, flow: str, **kwargs: Any) -> AsyncIterator[Dict[str, Any]]`
Пакетный экспорт контекстов сущностей через WebSocket.
### `export_graph_embeddings(self, flow: str, **kwargs: Any) -> AsyncIterator[Dict[str, Any]]`
Пакетный экспорт векторных представлений графа через WebSocket.
### `export_triples(self, flow: str, **kwargs: Any) -> AsyncIterator[trustgraph.api.types.Triple]`
Пакетный экспорт троек через WebSocket.
### `import_document_embeddings(self, flow: str, embeddings: AsyncIterator[Dict[str, Any]], **kwargs: Any) -> None`
Пакетный импорт векторных представлений документов через WebSocket.
### `import_entity_contexts(self, flow: str, contexts: AsyncIterator[Dict[str, Any]], **kwargs: Any) -> None`
Пакетный импорт контекстов сущностей через WebSocket.
### `import_graph_embeddings(self, flow: str, embeddings: AsyncIterator[Dict[str, Any]], **kwargs: Any) -> None`
Пакетный импорт векторных представлений графа через WebSocket.
### `import_rows(self, flow: str, rows: AsyncIterator[Dict[str, Any]], **kwargs: Any) -> None`
Пакетный импорт строк через WebSocket.
### `import_triples(self, flow: str, triples: AsyncIterator[trustgraph.api.types.Triple], **kwargs: Any) -> None`
Пакетный импорт троек через WebSocket.
--
## `Metrics`
```python
from trustgraph.api import Metrics
```
Клиент для синхронных метрик
### Методы
### `__init__(self, url: str, timeout: int, token: str | None) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
### `get(self) -> str`
Получение метрик Prometheus в виде текста
--
## `AsyncMetrics`
```python
from trustgraph.api import AsyncMetrics
```
Асинхронный клиент для работы с метриками.
### Методы
### `__init__(self, url: str, timeout: int, token: str | None) -> None`
Инициализация объекта. См. help(type(self)) для получения точного определения.
### `aclose(self) -> None`
Закрытие соединений.
### `get(self) -> str`
Получение метрик Prometheus в текстовом формате.
--
## `ExplainabilityClient`
```python
from trustgraph.api import ExplainabilityClient
```
Клиент для получения сущностей объяснимости с обеспечением конечной согласованности.
Использует обнаружение состояния покоя: получение, ожидание, повторное получение, сравнение.
Если результаты одинаковы, данные стабильны.
### Методы
### `__init__(self, flow_instance, retry_delay: float = 0.2, max_retries: int = 10)`
Инициализация клиента объяснимости.
**Аргументы:**
`flow_instance`: Экземпляр SocketFlowInstance для запроса троек.
`retry_delay`: Задержка между повторными попытками в секундах (по умолчанию: 0.2).
`max_retries`: Максимальное количество повторных попыток (по умолчанию: 10).
### `detect_session_type(self, session_uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None) -> str`
Определяет, является ли сессия типом GraphRAG или Agent.
**Аргументы:**
`session_uri`: URI сессии/вопроса.
`graph`: Именованный граф.
`user`: Идентификатор пользователя/пространства ключей.
`collection`: Идентификатор коллекции.
**Возвращает:** "graphrag" или "agent".
### `fetch_agent_trace(self, session_uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None, api: Any = None, max_content: int = 10000) -> Dict[str, Any]`
Получает полный трассировочный файл Agent, начиная с URI сессии.
Отслеживает цепочку происхождения: Вопрос -> Анализ(ы) -> Вывод.
**Аргументы:**
`session_uri`: URI сессии/вопроса Agent.
`graph`: Именованный граф (по умолчанию: urn:graph:retrieval).
`user`: Идентификатор пользователя/пространства ключей.
`collection`: Идентификатор коллекции.
`api`: Экземпляр TrustGraph Api для доступа к библиотекарю (необязательно).
`max_content`: Максимальная длина содержимого для вывода.
**Возвращает:** Словарь с вопросом, итерациями (список Анализов), сущностями вывода.
### `fetch_docrag_trace(self, question_uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None, api: Any = None, max_content: int = 10000) -> Dict[str, Any]`
Получает полный трассировочный файл DocumentRAG, начиная с URI вопроса.
Отслеживает цепочку происхождения:
Вопрос -> Базирование -> Исследование -> Синтез.
**Аргументы:**
`question_uri`: URI сущности вопроса.
`graph`: Именованный граф (по умолчанию: urn:graph:retrieval).
`user`: Идентификатор пользователя/пространства ключей.
`collection`: Идентификатор коллекции.
`api`: Экземпляр TrustGraph Api для доступа к библиотекарю (необязательно).
`max_content`: Максимальная длина содержимого для синтеза.
**Возвращает:** Словарь с вопросом, базированием, исследованием, сущностями синтеза.
### `fetch_document_content(self, document_uri: str, api: Any, user: str | None = None, max_content: int = 10000) -> str`
Получает содержимое из библиотеки по URI документа.
**Аргументы:**
`document_uri`: URI документа в библиотеке.
`api`: Экземпляр TrustGraph Api для доступа к библиотеке.
`user`: Идентификатор пользователя для библиотеки.
`max_content`: Максимальная длина содержимого для возврата.
**Возвращает:** Содержимое документа в виде строки.
### `fetch_edge_selection(self, uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None) -> trustgraph.api.explainability.EdgeSelection | None`
Получает сущность выбора ребра (используется Focus).
**Аргументы:**
`uri`: URI выбора ребра.
`graph`: Именованный граф для запроса.
`user`: Идентификатор пользователя/пространства ключей.
`collection`: Идентификатор коллекции.
**Возвращает:** EdgeSelection или None, если не найдено.
### `fetch_entity(self, uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None) -> trustgraph.api.explainability.ExplainEntity | None`
Получение сущности объяснимости по URI с обработкой обеспечения согласованности.
Использует обнаружение состояния покоя:
1. Получение троек для URI
2. Если результатов нет, повторить попытку
3. Если результатов больше нуля, подождать и получить снова
4. Если результаты совпадают, данные стабильны - разобрать и вернуть
5. Если результаты отличаются, данные все еще записываются - повторить попытку
**Аргументы:**
`uri`: URI сущности для получения
`graph`: Именованный граф для запроса (например, "urn:graph:retrieval")
`user`: Идентификатор пользователя/пространства имен
`collection`: Идентификатор коллекции
**Возвращает:** Подкласс ExplainEntity или None, если не найдено
### `fetch_focus_with_edges(self, uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None) -> trustgraph.api.explainability.Focus | None`
Получение сущности Focus и всех ее выбранных ребер.
**Аргументы:**
`uri`: URI сущности Focus
`graph`: Именованный граф для запроса
`user`: Идентификатор пользователя/пространства имен
`collection`: Идентификатор коллекции
**Возвращает:** Focus с заполненными edge_selections или None
### `fetch_graphrag_trace(self, question_uri: str, graph: str | None = None, user: str | None = None, collection: str | None = None, api: Any = None, max_content: int = 10000) -> Dict[str, Any]`
Получение полной трассировки GraphRAG, начиная с URI вопроса.
Отслеживает цепочку происхождения: Вопрос -> Основание -> Исследование -> Focus -> Синтез
**Аргументы:**
`question_uri`: URI сущности вопроса
`graph`: Именованный граф (по умолчанию: urn:graph:retrieval)
`user`: Идентификатор пользователя/пространства имен
`collection`: Идентификатор коллекции
`api`: Экземпляр TrustGraph Api для доступа к библиотеке (необязательно)
`max_content`: Максимальная длина содержимого для синтеза
**Возвращает:** Словарь с сущностями вопроса, основания, исследования, Focus и синтеза
### `list_sessions(self, graph: str | None = None, user: str | None = None, collection: str | None = None, limit: int = 50) -> List[trustgraph.api.explainability.Question]`
Перечисление всех сессий объяснимости (вопросов) в коллекции.
**Аргументы:**
`graph`: Именованный граф (по умолчанию: urn:graph:retrieval)
`user`: Идентификатор пользователя/пространства имен
`collection`: Идентификатор коллекции
`limit`: Максимальное количество сессий для возврата
**Возвращает:** Список сущностей Question, отсортированный по времени (самые новые в начале)
### `resolve_edge_labels(self, edge: Dict[str, str], user: str | None = None, collection: str | None = None) -> Tuple[str, str, str]`
Разрешение меток для всех компонентов тройки ребра.
**Аргументы:**
`edge`: Словарь с ключами "s", "p", "o"
`user`: Идентификатор пользователя/пространства имен
`collection`: Идентификатор коллекции
**Возвращает:** Кортеж (s_label, p_label, o_label)
### `resolve_label(self, uri: str, user: str | None = None, collection: str | None = None) -> str`
Разрешение rdfs:label для URI с использованием кэширования.
**Аргументы:**
`uri`: URI, для которого необходимо получить метку
`user`: Идентификатор пользователя/пространства имен
`collection`: Идентификатор коллекции
**Возвращает:** Метка, если найдена, в противном случае сам URI
--
## `ExplainEntity`
```python
from trustgraph.api import ExplainEntity
```
Базовый класс для сущностей, обеспечивающих понятность.
**Поля:**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
### Методы
### `__init__(self, uri: str, entity_type: str = '') -> None`
Инициализация объекта self. См. help(type(self)) для получения точного определения.
--
## `Question`
```python
from trustgraph.api import Question
```
Вопрос (Question entity) - запрос пользователя, который инициировал сессию.
**Поля (Fields):**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
`query`: <class 'str'>
`timestamp`: <class 'str'>
`question_type`: <class 'str'>
### Методы (Methods)
### `__init__(self, uri: str, entity_type: str = '', query: str = '', timestamp: str = '', question_type: str = '') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `Exploration`
```python
from trustgraph.api import Exploration
```
Объект исследования - ребра/фрагменты, извлеченные из хранилища знаний.
**Поля:**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
`edge_count`: <class 'int'>
`chunk_count`: <class 'int'>
`entities`: typing.List[str]
### Методы
### `__init__(self, uri: str, entity_type: str = '', edge_count: int = 0, chunk_count: int = 0, entities: List[str] = <factory>) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `Focus`
```python
from trustgraph.api import Focus
```
Объект фокусировки - выбранные ребра с использованием логического вывода на основе больших языковых моделей (только для GraphRAG).
**Поля:**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
`selected_edge_uris`: typing.List[str]
`edge_selections`: typing.List[trustgraph.api.explainability.EdgeSelection]
### Методы
### `__init__(self, uri: str, entity_type: str = '', selected_edge_uris: List[str] = <factory>, edge_selections: List[trustgraph.api.explainability.EdgeSelection] = <factory>) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `Synthesis`
```python
from trustgraph.api import Synthesis
```
Синтетическая сущность - окончательный ответ.
**Поля:**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
`document`: <class 'str'>
### Методы
### `__init__(self, uri: str, entity_type: str = '', document: str = '') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `Analysis`
```python
from trustgraph.api import Analysis
```
Аналитическая сущность - один цикл мышления/действия/наблюдения (только для Агента).
**Поля:**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
`action`: <class 'str'>
`arguments`: <class 'str'>
`thought`: <class 'str'>
`observation`: <class 'str'>
### Методы
### `__init__(self, uri: str, entity_type: str = '', action: str = '', arguments: str = '', thought: str = '', observation: str = '') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `Conclusion`
```python
from trustgraph.api import Conclusion
```
Заключительная сущность - окончательный ответ (только для агента).
**Поля:**
`uri`: <class 'str'>
`entity_type`: <class 'str'>
`document`: <class 'str'>
### Методы
### `__init__(self, uri: str, entity_type: str = '', document: str = '') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `EdgeSelection`
```python
from trustgraph.api import EdgeSelection
```
Выбранный ребро с обоснованием из шага GraphRAG Focus.
**Поля:**
`uri`: <class 'str'>
`edge`: typing.Dict[str, str] | None
`reasoning`: <class 'str'>
### Методы
### `__init__(self, uri: str, edge: Dict[str, str] | None = None, reasoning: str = '') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
### `wire_triples_to_tuples(wire_triples: List[Dict[str, Any]]) -> List[Tuple[str, str, Any]]`
Преобразование троек в формате "wire" в кортежи (s, p, o).
--
### `extract_term_value(term: Dict[str, Any]) -> Any`
Извлечение значения из словаря Term в формате "wire".
--
## `Triple`
```python
from trustgraph.api import Triple
```
Тройка RDF, представляющая утверждение графа знаний.
**Поля:**
`s`: <class 'str'>
`p`: <class 'str'>
`o`: <class 'str'>
### Методы
### `__init__(self, s: str, p: str, o: str) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `Uri`
```python
from trustgraph.api import Uri
```
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Создает новый строковый объект из заданного объекта. Если указаны параметры encoding или
errors, то объект должен предоставлять буфер данных, который будет декодирован с использованием указанной кодировки и обработчика ошибок.
В противном случае возвращается результат object.__str__() (если определен)
или repr(object).
encoding по умолчанию - 'utf-8'.
errors по умолчанию - 'strict'.
### Методы
### `is_literal(self)`
### `is_triple(self)`
### `is_uri(self)`
--
## `Literal`
```python
from trustgraph.api import Literal
```
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Создает новый строковый объект из заданного объекта. Если указаны параметры encoding или
errors, то объект должен предоставлять буфер данных, который будет декодирован с использованием указанной кодировки и обработчика ошибок.
В противном случае возвращается результат object.__str__() (если определен)
или repr(object).
encoding по умолчанию - 'utf-8'.
errors по умолчанию - 'strict'.
### Методы
### `is_literal(self)`
### `is_triple(self)`
### `is_uri(self)`
--
## `ConfigKey`
```python
from trustgraph.api import ConfigKey
```
Идентификатор конфигурационного ключа.
**Поля:**
`type`: <class 'str'>
`key`: <class 'str'>
### Методы
### `__init__(self, type: str, key: str) -> None`
Инициализация объекта self. См. help(type(self)) для получения точного определения.
--
## `ConfigValue`
```python
from trustgraph.api import ConfigValue
```
Пара ключ-значение конфигурации.
**Поля:**
`type`: <class 'str'>
`key`: <class 'str'>
`value`: <class 'str'>
### Методы
### `__init__(self, type: str, key: str, value: str) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `DocumentMetadata`
```python
from trustgraph.api import DocumentMetadata
```
Метаданные для документа в библиотеке.
**Атрибуты:**
`parent_id: Parent document ID for child documents (empty for top`: level docs)
**Поля:**
`id`: <class 'str'>
`time`: <class 'datetime.datetime'>
`kind`: <class 'str'>
`title`: <class 'str'>
`comments`: <class 'str'>
`metadata`: typing.List[trustgraph.api.types.Triple]
`user`: <class 'str'>
`tags`: typing.List[str]
`parent_id`: <class 'str'>
`document_type`: <class 'str'>
### Методы
### `__init__(self, id: str, time: datetime.datetime, kind: str, title: str, comments: str, metadata: List[trustgraph.api.types.Triple], user: str, tags: List[str], parent_id: str = '', document_type: str = 'source') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `ProcessingMetadata`
```python
from trustgraph.api import ProcessingMetadata
```
Метаданные для активной задачи обработки документа.
**Поля:**
`id`: <class 'str'>
`document_id`: <class 'str'>
`time`: <class 'datetime.datetime'>
`flow`: <class 'str'>
`user`: <class 'str'>
`collection`: <class 'str'>
`tags`: typing.List[str]
### Методы
### `__init__(self, id: str, document_id: str, time: datetime.datetime, flow: str, user: str, collection: str, tags: List[str]) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `CollectionMetadata`
```python
from trustgraph.api import CollectionMetadata
```
Метаданные для набора данных.
Коллекции обеспечивают логическую группировку и изоляцию для документов и
данных графа знаний.
**Атрибуты:**
`name: Human`: читаемое имя коллекции
**Поля:**
`user`: <class 'str'>
`collection`: <class 'str'>
`name`: <class 'str'>
`description`: <class 'str'>
`tags`: typing.List[str]
### Методы
### `__init__(self, user: str, collection: str, name: str, description: str, tags: List[str]) -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `StreamingChunk`
```python
from trustgraph.api import StreamingChunk
```
Базовый класс для потоковой передачи фрагментов ответа.
Используется для операций потоковой передачи на основе WebSocket, когда ответы доставляются
постепенно по мере их генерации.
**Поля:**
`content`: <class 'str'>
`end_of_message`: <class 'bool'>
### Методы
### `__init__(self, content: str, end_of_message: bool = False) -> None`
Инициализация объекта self. См. help(type(self)) для получения точного определения.
--
## `AgentThought`
```python
from trustgraph.api import AgentThought
```
Обоснование/процесс мышления агента.
Представляет собой внутренние этапы рассуждений или планирования агента во время выполнения.
Эти фрагменты показывают, как агент мыслит о проблеме.
**Поля:**
`content`: <class 'str'>
`end_of_message`: <class 'bool'>
`chunk_type`: <class 'str'>
### Методы
### `__init__(self, content: str, end_of_message: bool = False, chunk_type: str = 'thought') -> None`
Инициализация self. См. help(type(self)) для получения точного определения.
--
## `AgentObservation`
```python
from trustgraph.api import AgentObservation
```
Фрагмент наблюдения за выполнением инструмента агента.
Представляет собой результат или наблюдение, полученное в результате выполнения инструмента или действия.
Эти фрагменты показывают, что агент узнал, используя инструменты.
**Поля:**
`content`: <class 'str'>
`end_of_message`: <class 'bool'>
`chunk_type`: <class 'str'>
### Методы
### `__init__(self, content: str, end_of_message: bool = False, chunk_type: str = 'observation') -> None`
Инициализация self. См. help(type(self)) для получения точной сигнатуры.
--
## `AgentAnswer`
```python
from trustgraph.api import AgentAnswer
```
Заключительный фрагмент ответа агента.
Представляет собой окончательный ответ агента пользователю на его запрос после завершения
процесса рассуждений и использования инструментов.
**Атрибуты:**
`chunk_type: Always "final`: answer"
**Поля:**
`content`: <class 'str'>
`end_of_message`: <class 'bool'>
`chunk_type`: <class 'str'>
`end_of_dialog`: <class 'bool'>
### Методы
### `__init__(self, content: str, end_of_message: bool = False, chunk_type: str = 'final-answer', end_of_dialog: bool = False) -> None`
Инициализация self. См. help(type(self)) для получения точной сигнатуры.
--
## `RAGChunk`
```python
from trustgraph.api import RAGChunk
```
Поток данных RAG (Retrieval-Augmented Generation).
Используется для потоковой передачи ответов от графовых систем RAG, систем RAG на основе документов, для завершения текста,
и других генеративных сервисов.
**Поля:**
`content`: <class 'str'>
`end_of_message`: <class 'bool'>
`chunk_type`: <class 'str'>
`end_of_stream`: <class 'bool'>
`error`: typing.Dict[str, str] | None
### Методы
### `__init__(self, content: str, end_of_message: bool = False, chunk_type: str = 'rag', end_of_stream: bool = False, error: Dict[str, str] | None = None) -> None`
Инициализация объекта self. См. help(type(self)) для получения точного определения.
--
## `ProvenanceEvent`
```python
from trustgraph.api import ProvenanceEvent
```
Событие, связанное с происхождением, для обеспечения понятности.
Генерируется во время запросов GraphRAG, когда включен режим объяснения.
Каждое событие представляет узел происхождения, созданный во время обработки запроса.
**Поля:**
`explain_id`: <class 'str'>
`explain_graph`: <class 'str'>
`event_type`: <class 'str'>
### Методы
### `__init__(self, explain_id: str, explain_graph: str = '', event_type: str = '') -> None`
Инициализация self. См. help(type(self)) для получения точной сигнатуры.
--
## `ProtocolException`
```python
from trustgraph.api import ProtocolException
```
Возникает при возникновении ошибок протокола WebSocket.
--
## `TrustGraphException`
```python
from trustgraph.api import TrustGraphException
```
Базовый класс для всех ошибок сервиса TrustGraph.
--
## `AgentError`
```python
from trustgraph.api import AgentError
```
Ошибка сервиса агента
--
## `ConfigError`
```python
from trustgraph.api import ConfigError
```
Ошибка сервиса конфигурации
--
## `DocumentRagError`
```python
from trustgraph.api import DocumentRagError
```
Ошибка извлечения документов RAG.
--
## `FlowError`
```python
from trustgraph.api import FlowError
```
Ошибка управления потоком
--
## `GatewayError`
```python
from trustgraph.api import GatewayError
```
Ошибка API Gateway
--
## `GraphRagError`
```python
from trustgraph.api import GraphRagError
```
Ошибка извлечения данных из графа RAG.
--
## `LLMError`
```python
from trustgraph.api import LLMError
```
Ошибка сервиса LLM
--
## `LoadError`
```python
from trustgraph.api import LoadError
```
Ошибка загрузки данных
--
## `LookupError`
```python
from trustgraph.api import LookupError
```
Ошибка поиска/просмотра.
--
## `NLPQueryError`
```python
from trustgraph.api import NLPQueryError
```
Ошибка сервиса обработки запросов на естественном языке.
--
## `RowsQueryError`
```python
from trustgraph.api import RowsQueryError
```
Ошибка сервиса запросов данных.
--
## `RequestError`
```python
from trustgraph.api import RequestError
```
Ошибка обработки запроса
--
## `StructuredQueryError`
```python
from trustgraph.api import StructuredQueryError
```
Ошибка сервиса структурированных запросов.
--
## `UnexpectedError`
```python
from trustgraph.api import UnexpectedError
```
Неожиданная/неизвестная ошибка
--
## `ApplicationException`
```python
from trustgraph.api import ApplicationException
```
Базовый класс для всех ошибок сервиса TrustGraph.
--