Abbey - это интерфейс ИИ с ноутбуками, базовым чатом, документами, видео на YouTube и многое другое. Он организует множество моделей искусственного интеллекта в частном пакете самостоятельно. Вы можете запустить Abbey в качестве сервера для нескольких пользователей, используя своего собственного поставщика аутентификации, или вы можете запустить его для себя на своей собственной машине. Аббатство очень настраивается, используя выбранные вами LLMS, модели TTS, модели OCR и поисковые системы. Вы можете найти здесь размещенную версию аббатства, которая используется многими студентами и профессионалами.
Есть какие -либо проблемы? Пожалуйста, опубликуйте проблему или обратитесь к создателю напрямую! Twitter DM @gkamer8, электронная почта [email protected] или иным образом пинги - ему это нравится.
Если аббатство не по умолчанию настраивается по вашему вкусу, и вам удобно писать код, пожалуйста, рассмотрите возможность открытия PR с вашими улучшениями! Добавление новых интеграций и даже полных интерфейсов просто; Смотрите более подробную информацию в разделе «Содействие» ниже.


docker compose . Смотрите детали здесь.Если у вас есть предыдущая версия аббатства и вы делаете шаблон «Новая установка» с настройками.
Настройка включает docker compose себя клонирование/загрузку этого репо, создание .env и settings.yml Вот шаги:
Шаг 1: клонировать / загрузите этот репозиторий и перемещайтесь внутри него.
Шаг 2: Создайте файл с именем .env для секретных ключей и файл с именем settings.yml для настройки конфигурации в корне репо (то есть на том же уровне, что и файл docker-compose.yml ). Затем участвуйте в эти файлы, которые хотите использовать клавиши / модели. Вы можете найти подробную информацию о том, как настроить каждый тип интеграции на протяжении всего этого чтения.
Файл .env содержит любые ключи API или другие секреты, которые вам нужны. Вы также должны включить пароль для базы данных MySQL, которую использует аббатство. Файл .env для кого -то, использующего официальный API OpenAI, совместимый с API OpenAI, требующий ключа, и антропный API может выглядеть как:
MYSQL_ROOT_PASSWORD="my-password"
OPENAI_API_KEY="my-openai-key"
OPENAI_COMPATIBLE_KEY="my-api-key"
ANTHROPIC_API_KEY="my-anthropic-key"
Файл settings.yml настраивает аббатство для использования нужных моделей и параметров. Минимум, вы должны использовать хотя бы одну языковую модель и одну модель встраивания. Сначала поместите лучшие модели, чтобы аббатство использовала их по умолчанию. Например, вот settings.yml Myml, который использует модели из официального API OpenAI, API, совместимый с OpenAI, антроп и Оллама:
lms:
models:
- provider: anthropic
model: "claude-3-5-sonnet-20241022"
name: "Claude 3.5 Sonnet" # optional, give a name for Abbey to use
traits: "Coding" # optional, let Abbey display what it's good for
desc: "One of the best models ever!" # optional, let Abbey show a description
accepts_images: true # optional, put true if the model is a vision model / accepts image input
context_length: 200_000 # optional, defaults to 8192
- provider: openai_compatible
model: "gpt-4o"
accepts_images: true
context_length: 128_000
- provider: ollama
model: "llama3.2"
openai_compatible:
url: "http://host.docker.internal:1234" # Use host.docker.internal for services running on localhost
ollama:
url: "http://host.docker.internal:11434" # Use host.docker.internal for services running on localhost
embeds:
models:
- provider: "openai"
model: "text-embedding-ada-002"
И учитывая, что вы также поместили соответствующие ключи в .env , это будет полный файл настроек. Чтобы настроить различные модели, поисковые системы, службы аутентификации, модели текста в речь и т. Д.: Пожалуйста, ищите соответствующую документацию ниже!
Шаг 3: Если вы все еще играете со своими настройками, вы можете запустить аббатство в режиме DEV, просто используя:
docker compose up
В режиме разработчика, когда вы изменяете настройки / секреты, вам просто нужно перезапустить контейнеры, чтобы применить ваши настройки, что можно сделать с помощью:
docker compose restart backend frontend celery db_pooler
Как только вы будете готовы, вы можете запустить аббатство в производственном режиме, чтобы обеспечить лучшую производительность:
docker compose -f docker-compose.prod.yml up --build
Если вы хотите изменить свои настройки / секреты в режиме Prod, вам нужно восстановить контейнеры:
docker compose down
docker compose -f docker-compose.prod.yml up --build
Шаг 4: Теперь аббатство должно работать по адресу http://localhost:3000 ! Просто посетите этот URL в своем браузере, чтобы начать использовать аббатство. В режиме разработчика может потребоваться секунда для загрузки.
Обратите внимание, что бэкэнд работает по адресу http://localhost:5000 - если вы пойдете туда, вы должны увидеть лирику от Гилберта и Салливана HMS Pinafore. Если нет, то бэкэнд не работает.
Если что -то не работает правильно, пожалуйста, (пожалуйста) подайте проблему или обратитесь к создателю напрямую - @gkamer8 в твиттере или [email protected] по электронной почте.
По умолчанию аббатство работает на Localhost в портах 3000 для фронта и 5000 для бэкэнда. Если вы хотите изменить их (так как вы довольно подкованные), вам нужно изменить свой файл Docker Compose, а затем добавить его в свои settings.yml :
services:
backend:
public_url: http://localhost:5000 # Replace with your new user-accessible BACKEND URL
internal_url: http://backend:5000 # This probably won't change - it's where the frontend calls the backend server side, within Docker
frontend:
public_url: http://localhost:3000 # Replace with your new user-accessible FRONTEND URL
Обязательно обновите свой файл Docker Compose, например, изменение отображения порта для бэкэнд на 1234: 5000, при изменении порта. Обязательно выключите его для правильного файла Docker-Compose ( docker-compose.prod.yml для сборки Prod, docker-compose.yml для dev). Вот как это будет выглядеть для бэкэнда:
backend:
# ... some stuff
ports:
- "1234:5000" # now the backend is at http://localhost:1234 in my browser
# ... some stuff
ОБЩИЙ: Убедитесь, что все контейнеры Docker фактически работают с docker ps . Вы должны увидеть 6: Backend, Frontend, сельдерей, Redis, MySQL и DB_Pooler (извините, что на заднем плане так много - аббатство может выполнять AI -задачи, которые требуют контейнеров бассейна, Redis и сельдерея). Если кто -то не работает, попробуйте перезапустить его с помощью docker compose restart backend (или Frontend, или сельдерея, или что у вас есть). Если он продолжает ругаться, есть большая вероятность, что вы испортили свои settings.yml Myml или забыл поместить соответствующие секреты в .env В противном случае посмотрите на журналы.
Конфигурация Docker Invalid: если он сообщает вам, что ваш Docker Compose является недействительным, то вам, вероятно, нужно обновить Docker на вашем компьютере до чего -то> = версия 2. Аббатство использует некоторые относительно новые функции Docker, такие как дефолты для переменных ENV и профилей. Будет проще просто обновить Docker в долгосрочной перспективе - доверие.
Вещи выглядят пустыми / не загружайте / запросы на бэкэнд, кажется, не работают правильно. Во -первых, перейдите к бэкэнд в браузере, например, http://localhost:5000 или любой другой URL, в который вы вкладывали первоначально. Это должно дать вам сообщение, как «Британская смола - это парящая душа ...». Если ваш бэкэнд не работает, проверьте журналы в Docker для получения дополнительной информации - пожалуйста, прочитайте то, что они говорят!
Docker застрял загружать/установить/запустить изображение. Есть вероятность, что у вас не хватает места на своей машине. Во -первых, попробуйте запустить docker system prune , чтобы очистить любые неприятные вещи, лежащие в Docker, о которых вы забыли. Затем попробуйте очистить место на вашем компьютере - возможно, достаточно для ~ 10 ГБ на вашей машине. Затем перезапустите Docker и попробуйте еще раз. Если у вас все еще есть проблемы - попробуйте удалить / переустановить Docker.
Команда docker compose отказывается работать из -за какой -то «API» или чего -то еще. Если Docker работает (например, Docker Desktop на Mac), то вам следует перезапустить его. Если это не помогает, попробуйте очистить/очистить его данные перед перезапуском (нажмите значок «ошибка» в Docker Desktop, если они у вас есть - тогда clean/purge . Если Docker не работает, то это ваша проблема! Вы должны убедиться, что Docker Daemon (то есть настольный компьютер Docker на Mac) работает.
Порт уже используется. Бэкэнд аббатства работает по порту 5000 по умолчанию; Фронта Abbey работает на порту 3000. Возможно, что -то на вашем компьютере уже использует порт 5000 или порт 3000. На Mac обычно означает Airplay. Ваша цель должна состоять в том, чтобы проверить, работает ли что -нибудь на портах 3000 или 5000, и, если это так, чтобы закрыть эти процессы. На Mac/Linux: используйте lsof -i :5000 или lsof -i :3000 чтобы проверить, работает ли какой -либо процесс на этих портах. Если вы заметили процесс, подобный «Controlce», работающему на Mac, это означает «Центр управления», и это, вероятно, получатель Airplay. Вы можете перейти в настройки вашей системы на Mac и снять "Airplay Reciver". Если вы нашли что -то еще, вы можете убить его с помощью kill -9 YOUR_PID где YOUR_PID заменяется идентификатором процесса (показан с помощью LSOF). В Windows: используйте netstat -ano | findstr :5000 или netstat -ano | findstr :3000 . Затем вы можете убить процесс с помощью taskkill /PID YOUR_PID /F - заменить YOUR_PID на идентификатор процесса соответствующего процесса.
Сторонние интеграции управляются в ваших настройках и файлах переменной среды. Вот краткое изложение доступных:
Языковые модели (LMS)
Модели встраивания (вставки)
Текст в речь (TTS)
Оптическое распознавание персонажа (OCR)
Поисковые системы (Интернет)
https://api.bing.microsoft.com/v7.0/search )Хранилище файла (хранение)
file-storage (по умолчанию)Аутентификация
Некоторые интеграции требуют конфигурации в настройках. Myml. При использовании какой -либо из следующих интеграций вы должны указать его настройки так:
s3:
bucket: 'your-bucket'
searxng:
url: "http://host.docker.internal:8080" # Replace with your URL
ollama:
url: "http://host.docker.internal:11434" # Replace with your URL
openai_compatible:
url: "http://host.docker.internal:12345" # Replace with your URL
Они идут embeds корне settings.yml lms
Языковые модели настроены в lms в settings.yml . Myml. Вы можете указать языковые модели от любого поставщика, которого вы хотите поддержать, плюс значения по умолчанию, которые используются за кулисами для таких вещей, как генерация викторины, резюме и предложение вопросов. У вас должен быть хотя бы один LM, чтобы аббатство работало должным образом. Не забудьте настроить соответствующие настройки поставщика, если это необходимо, как показано выше.
lms:
defaults: # all are optional, use the optional "code" you specify to refer to each model, or use "model-provider" like "gpt-4o-openai"
chat: "llama3.2-ollama" # User chat model (user can change) - defaults to first listed model
fast: "llama3.2-ollama" # Fastest model, used for suggested questions and other places - defaults to chat model
high_performance: "gpt-4o" # Your best language model, used for generating curricula - defaults to default chat model
long_context: "gpt-4o" # Model used in long-context situations - defaults to longest context model specified
balanced: "claude-3-5-sonnet-anthropic" # Model that is in the middle for speed / accuracy - defaults to default chat model
fast_long_context: "gpt-4o-mini-openai" # A long context model that's fast, defaults to long_context model, used for summaries / key points
alt_long_context: "claude-3-5-sonnet" # A long context model used for variation in things like question generation - default to long_context
models:
- provider: openai # required - see below table for options
model: "gpt-4o" # required, code for the API
context_length: 128_000 # optional (defaults to 4096)
supports_json: true # optional, defaults to false
accepts_images: true # optional, defaults to false
name: "GPT-4o" # optional display name for the model
desc: "One of the best models ever!" # optional, lets Abbey display a description
code: "gpt-4o" # optional - defaults to 'model-provider' like 'gpt-4o-openai' - used to specify defaults above.
disabled: false # optional
# Specify more in a list...
Эта таблица дает код поставщика для каждого поставщика и соответствующее имя ключа API, чтобы поместить в .env :
| Поставщик | Код провайдера | Ключевое имя API | Нуждается в настройке поставщика |
|---|---|---|---|
| Openai | Openai | Openai_api_key | Нет |
| Антроп | антроп | Anpropic_api_key | Нет |
| Оллама | Оллама | Да | |
| OpenAI совместим | openai_compatible | Openai_compatible_key | Да |
Модели текста в речевые модели настроены в соответствии с tts в settings.yml . Myml. Вы можете указать модели TTS от любого поставщика, которого вы хотите поддержать, а также по умолчанию. Модели TTS абсолютно необязательны. Не забудьте настроить соответствующие настройки поставщика, если это необходимо, как показано выше.
tts:
default: "openai_onyx"
voices:
- provider: openai # required
voice: "onyx" # required
model: "tts-1" # required
name: "Onyx" # optional
desc: "One of the best models ever!" # optional
code: "openai_onyx" # optional, to set a default via a code (defaults to "voice-model-provider")
sample_url: "https://public-audio-samples.s3.amazonaws.com/onyx.wav" # optional
disabled: false # optional
| Поставщик | Код провайдера | Ключевое имя API | Нуждается в настройке поставщика |
|---|---|---|---|
| Openai | Openai | Openai_api_key | Нет |
| Одиннадлабс | Eleven_labs | Eleven_labs_api_key | Нет |
| OpenAI совместим | openai_compatible | Openai_compatible_key | Да |
Модели встраивания настроены под embeds в settings.yml . На данный момент ровно одна обязательная модель внедрения используется по всему аббатству за раз. Модели встраивания используются для поиска документов. Не забудьте настроить соответствующие настройки поставщика, если это необходимо, как показано выше.
embeds:
models:
- provider: "openai" # required
model: "text-embedding-ada-002" # required
| Поставщик | Код провайдера | Ключевое имя API | Нуждается в настройке поставщика |
|---|---|---|---|
| Openai | Openai | Openai_api_key | Нет |
| Оллама | Оллама | Да | |
| OpenAI совместим | openai_compatible | Openai_compatible_key | Да |
Поисковые системы настроены в соответствии с web . settings.yml . Они используются, когда вы проверяете Use Web при чате по Аббатству. Не забудьте настроить соответствующие настройки поставщика, если это необходимо, как показано выше.
web:
engines:
- provider: "bing" # required
# TO USE SEARXNG, MAKE SURE YOUR SEARXNG SETTINGS ARE CORRECT - SEE [BELOW](#searxng)
- provider: "searxng"
- engine: "pubmed" # Only used for SearXNG - leave blank to search over all engines you've enabled
- provider: "searxng"
engine: "arxiv"
use_pdf: true # Some SearXNG engines give PDF URLs - this tells Abbey to go to the PDF rather than the regular result
| Поставщик | Код провайдера | Ключевое имя API | Нуждается в настройке поставщика |
|---|---|---|---|
| Бинг | бинг | Bing_api_key | Нет |
| Searxng | searxng | Да |
Searxng не по умолчанию разрешает API API. При запуске экземпляра Searxng вы должны убедиться, что ваши настройки Searxng (не в репо аббатстве, а в searxng/settings.yml ) разрешают json в качестве формата, например:
search:
formats:
- html
- json
Вы можете убедиться, что ваш экземпляр Searxng работает правильно, когда работает следующий запрос на завиток (замените URL на URL -адрес экземпляра Searxng - порт может быть другим.)
curl -kLX GET --data-urlencode q='abbey ai' -d format=json http://localhost:8080
Оптические API распознавания символов настроены в ocr в settings.yml . Myml. По умолчанию OCR не используется. Необязательно настройка OCR позволяет аббатству прочитать сканированные PDF -файлы. Аббатство автоматически определяет, представляется ли OCR необходимым.
ocr:
models:
- provider: "mathpix"
| Поставщик | Код провайдера | Имена ключей API | Нуждается в настройке поставщика |
|---|---|---|---|
| Mathpix | Mathpix | Mathpix_api_app и mathpix_api_key | Нет |
API -интерфейсы электронной почты настроены по email в settings.yml . Myml. Настройка электронной почты позволяет аббатству отправлять ссылки на активы в аббатстве, когда они обмениваются, плюс в нескольких других обстоятельствах. По умолчанию аббатство не отправляет электронные письма. Запуск Abbey с профилем электронной почты (например docker compose up --profile email ) Позволяет аббатству отправить дополнительные напоминания по электронной почте для некоторых шаблонов.
email:
default: smtp # Refer to each service by its provider name (defaults to first specified)
services:
- provider: sendgrid # Required
email: "[email protected]" # Required
unsub_group: 24624 # Optional, only for Sendgrid
- provider: smtp # Regular email
email: "[email protected]"
| Поставщик | Код провайдера | Обязательные секреты | Нуждается в настройке поставщика |
|---|---|---|---|
| Sendgrid | Sendgrid | Sendgrid_api_key | Нет |
| SMTP Электронная почта | SMTP | Smtp_server, smtp_port, smtp_email и smtp_password | Нет |
API -интерфейсы хранилища файлов настроены в соответствии с storage в settings.yml . Myml. По умолчанию аббатство хранит все загруженные файлы в папке с установкой file-storage . При резервном копировании аббатства вы должны сделать резервную копию этой папки плюс база данных. Если вы хотите использовать S3, вы можете использовать следующее:
storage:
default: s3 # All new uploads go to the default provider (you don't need to set up local)
locations:
- provider: s3
| Поставщик | Код провайдера | Имена ключей API | Нуждается в настройке поставщика |
|---|---|---|---|
| S3 | S3 | Aws_access_key и aws_secret_key | Нет |
| Местный | местный | Нет |
Поставщики аутентификации настроены в соответствии с auth в settings.yml . Myml. По умолчанию аббатство будет использовать одного пользователя «по умолчанию». Настройка дополнительных поставщиков аутентификации позволяет настроить многопользовательские настройки. Вы можете использовать поставщика OAuth2, такого как Google, или вы можете самостоятельно управлять экземпляром KeyCloak (инструкции ниже). Для таких поставщиков, как Google и GitHub, вам понадобится секретный клиент и идентификатор клиента. При регистрации аббатства вам, возможно, придется предоставить URL -адрес, где доступно аббатство - это будет http://localhost:3000 по умолчанию или любой публичный URL, который вы используете для фронта Аббатства.
auth:
providers:
- google
- github
- keycloak
| Поставщик | Код провайдера | Env Переменные | Как приобрести идентификатор клиента / секрет |
|---|---|---|---|
| Google_client_id и Google_secret | Смотрите здесь | ||
| GitHub | GitHub | Github_client_id и github_secret | Смотрите здесь |
| KeyCloak | KeyCloak | Keycloak_public_url, keycloak_internal_url, keycloak_realm, keycloak_secret и keycloak_client_id | См. ниже |
В производственных средах вы также должны предоставить дополнительные секреты аудитории для обработки токенов Auth. Сделайте это, добавив следующее в файл вашей среды:
CUSTOM_AUTH_SECRET="my-auth-secret"
REFRESH_TOKEN_SECRET="my-refresh-secret"
Вы можете самостоятельно аутентификацию, полностью используя KeyCloak. Использование KeyCloak с аббатством требует определенных настройков - например, URL -адрес фронта для сферы необходимо указать, чтобы Abbey и KeyCloak работали в той же VM Docker. Если у вас есть существующий экземпляр KeyCloak, вы должны создать нового клиента для аббатства с идентификатором клиента и секретом клиента, который вы помещаете в .env . В противном случае, вот инструкции настраивают новый экземпляр для аббатства:
Вот файл keycloak-realm.json который вы можете разместить рядом с вашим файлом docker-compose , который автоматически устанавливает KeyCloak:
{
"realm": "abbey-realm",
"enabled": true,
"loginWithEmailAllowed": true,
"duplicateEmailsAllowed": false,
"registrationEmailAsUsername": true,
"attributes": {
"frontendUrl": "http://localhost:8080"
},
"clients": [
{
"clientId": "abbey-client",
"enabled": true,
"protocol": "openid-connect",
"publicClient": false,
"secret": "not-a-secret",
"redirectUris": ["http://localhost:3000/*"]
}
],
"users": [
{
"username": "[email protected]",
"email": "[email protected]",
"enabled": true,
"emailVerified": true,
"credentials": [
{
"type": "password",
"value": "password"
}
]
}
]
}
Вот пример сервиса, который вы можете запустить вместе с этим в вашем файле docker-compose.yml :
services:
keycloak:
image: quay.io/keycloak/keycloak:22.0.3
container_name: keycloak
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
ports:
- 8080:8080
volumes:
- ./keycloak-realm.json:/opt/keycloak/data/import/myrealm.json
command: ["start-dev", "--import-realm"]
volumes:
keycloak_data:
KeyCloak также требует некоторых дополнительных секретов в .env :
# The Public URL should be user accessible
KEYCLOAK_PUBLIC_URL="http://localhost:8080"
# The optional Internal URL should be accessible within Docker
KEYCLOAK_INTERNAL_URL="http://keycloak:8080"
KEYCLOAK_REALM="abbey-realm"
KEYCLOAK_SECRET="not-a-secret"
KEYCLOAK_CLIENT_ID="abbey-client"
Добавление этого сервиса + создание файла keycloak-realm.json + ввод секретов в .env должен позволить аббатству «просто работать» с KeyCloak в среде Dev.
По умолчанию у аббатства есть сервис MySQL, для которой вы должны предоставить MYSQL_ROOT_PASSWORD в .env . Аббатство использует две базы данных, custom_auth для аутентификации и learn для всего остального. Они могут быть на одном или разных серверах. На данный момент сервер должен быть MySQL или MySQL совместимы (не постгры).
Вы можете изменить, где доступен сервер MySQL, используя эти переменные .env :
MYSQL_ROOT_PASSWORD=my-root-password
# Remember that the endpoint is accessed server side, so "mysql" is the default network name
DB_ENDPOINT=mysql
DB_USERNAME=root
DB_PASSWORD=my-root-password
DB_PORT=3306
DB_NAME=learn
DB_TYPE=local # 'local' or 'deployed' --> changes how app deals with transaction settings
# You should set global transaction isolation level to READ COMMITTED when using your own database
CUSTOM_AUTH_DB_ENDPOINT=mysql
CUSTOM_AUTH_DB_USERNAME=root
CUSTOM_AUTH_DB_PASSWORD=my-root-password
CUSTOM_AUTH_DB_PORT=3306
CUSTOM_AUTH_DB_NAME=custom_auth
Когда запускается служба MySQL по умолчанию, она будет инициализироваться, используя файлы внутри mysql-init . Если вы настроите свою собственную службу MySQL, вы инициализируете соответствующие базы данных / таблицы, запустив эти файлы .sql (копирование и вставку в терминал было бы достаточно).
Вы можете заметить, что на домашней странице (во время подписания) правая сторона имеет изображение и описание. При инициализации базы данных есть одно изображение, которое будет отображаться по умолчанию (которое размещено в Интернете). Чтобы изменить это изображение или добавить больше, вам нужно добавить записи в таблицу Art_history в базе данных Learn (в службе MySQL). Там вы положили URL для изображения и отметки для описания. Домен (ы), где изображение размещено, также необходимо включить в settings.yml .
images:
domains:
- "my-domain.com"
Чтобы добавить запись в Art_history, вам нужно выполнить SQL. С помощью Docker-Compose вы можете использовать:
docker-compose exec mysql mysql -u root -p
а затем используйте свой пароль mysql root (доступен в файле .env, расположенный в корне проекта). Затем вам нужно будет выполнить:
use learn;
INSERT INTO art_history (`markdown`, `image`)
VALUES ('This is my *description*', 'https://my-domain.com/image.webp');
Изображение выбирается случайным образом для отображения из этой таблицы art_history .
Вы можете изменить имя аббатства на все, что вам нравится, используя эту опцию в settings.yml .
name: "Abbey" # Replace with your chosen name
Другие брендинг, такие как логотипы, любимые и т. Д., Расположены на frontend/public . Вы можете изменить их, заменив файлы (но сохраняя их имена). Фоновые изображения находятся в папке frontend/public/random .
По умолчанию аббатство будет питать в жестко -кодированном URL, когда бэкэнд запускается и каждый час после этого. Это сделано для отслеживания статистики использования. Бэкэнд -версия, в которой вы находитесь, плюс ваши settings.yml Myml включены в Ping. Чтобы отключить пинг, поместите следующее в ваших settings.yml :
ping: false
Поскольку я не могу сказать разницу между пользователем, который устанавливает ping: false , и пользователем, который перестал пользоваться аббатством, рассмотрите возможность обратиться по адресу [email protected], чтобы я мог получить грубое количество пользователей, которые отключили пинг.
Одной из главных сильных сторон аббатства является его расширенность. Вы можете реализовать новые интеграции и интерфейсы прямо.
Каждый тип интеграции, за исключением AUTH (см. Примечания ниже) находится в файле в backend/app/integrations . Каждый тип интеграции реализует конкретный класс (например, lm.py дает класс LM, и каждый тип интеграции реализует этот класс). Вы можете просто добавить класс, который наследует от базового класса (LM, TTS, OCR и т. Д.). Затем вы должны добавить свой класс в словарь PROVIDER_TO_ (для каждого типа интеграции есть другой). Для интеграций, которые могут быть выбраны пользователем, он должен автоматически всплыть, как только соответствующее изменение будет внесено в settings.yml (например, пользователь может выбрать свою поисковую систему, языковую модель и модель текста в речь). Для таких интеграций, как embed , которые по умолчанию выбираются Abbey, вы должны убедиться, что ваша интеграция является по умолчанию в settings.yml .
Если ваша интеграция зависит от секретов, вы должны добавить ее в backend/app/configs/secrets.py используя указанный шаблон, а затем импортировать его в файл интеграции (например, lm.py ).
В отличие от других интеграций, если вы просто добавляете поставщика OAuth2, на самом деле нет причин делать что -либо в бэкэнд. Сервер Next.js Frontend обрабатывает все. Вам нужно сделать:
frontend/src/pages/api/auth/[...auth].js . Самый простой пример - класс Googleauth (расширение базоита), который предоставляет три URL: конечная точка oauth2 auth; конечная токная токена OAuth2; и openid подключить конечную точку пользователя. Поскольку GitHub не реализует Standard OpenID Connect, он реализует функцию getUserData () напрямую.authProviders на основе доступности секретов.frontend/src/auth/custom.js . Во-первых, это означает, что наставление для enabledProviders кода вашего нового поставщика условно основано на том, установлена ли переменная среды на 1 (переменная среды должна начинаться с lext_public, чтобы она была доступной на стороне клиента). Во -вторых, это означает добавление объекта в список providers , указывающий код вашего поставщика и значение кнопки (вы можете добавить логотип вашего поставщика, следуя шаблону и добавив логотип в frontend/public/random ). Одна примечания в поисковых системах: некоторые функции класса для поисковой системы возвращают пользовательские объекты поиска; Соответствующие классы реализованы в web.py , и вы должны взглянуть, если вы решите реализовать новую интеграцию поисковой системы.
В аббатстве все является «актив», и каждый актив реализует «шаблон». Например, если вы загружаете документ, он становится «активом» шаблонного document . Точно так же, если вы создаете новое рабочее пространство, оно становится «активом» шаблона notebook (внутреннее имя для рабочей области). На фронте интерфейс, предоставленный пользователю, определяется шаблоном, на который он смотрит. Существует множество общих переменных, которые должны быть установлены для каждого шаблона (например, независимо от того, разрешено ли шаблон для общения, если он находится в папке или что -то в этом роде). Эти переменные и реализованные функции определяют, среди прочего, то, как ведут себя общие конечные точки, такие как /asset/chat .
На бэкэнд все шаблоны - это классы, которые наследуют от базового класса Template . Эти шаблоны расположены в своих собственных файлах в backend/app/templates . Шаблоны зарегистрированы в backend/app/templates.py . Вы должны добавить там экземпляр вашего шаблона, чтобы включить его. Вы также должны добавить шаблон в backend/app/configs/user_config.py . Внутри шаблона файл также может быть конкретные конечные точки для этого шаблона; Если вы решите создать один, он должен быть зарегистрирован в backend/app/__init__.py .
На фронте все шаблоны реализованы в одном файле, frontend/src/template.js . В каждом шаблоне есть класс, который наследует от класса Template . В нижней части файла существуют различные списки и объекты, которые определяют доступность шаблона; Вы должны по крайней мере добавить свой шаблон в объект TEMPLATES , чтобы сделать его доступным для пользователей.
Некоторые шаблоны похожи на листья; Например, в документах нет связанных источников активов, что означает, что когда вы общаетесь с документом, вы действительно общаетесь только с этим одним документом. Другие шаблоны имеют связанные источники. Например, содержание папки является связанными активами. Эта система существует для других шаблонов, таких как текстовый редактор, который может получить материал из других активов с его функциональностью записи ИИ. Постоянно использование источников гарантирует, что функциональность, которая распространяется на шаблоны, такие как обмен активами, остается функциональной. Например, если вы разделяете папку с кем -то, разрешения распространяются на все элементы внутри этой папки.
Стандартный способ извлечь информацию об источниках актива на фронте заключается в конечной точке /assets/sources-info . Стандартный способ добавления источника в активу-с конечными точками /assets/add-resource и /assets/add-resources . Эти конечные точки ищут запись в таблице asset_metadata с Key retrieval_source , значение которого является идентификатором актива. Смотрите более подробную информацию об этих конечных точках в backend/app/assets.py .