Osmi
Использование OSMI-AI

Настройка и встраивание чат-виджета

Вы можете легко добавить чат-виджет на сайт: скопируйте скрипт виджета и вставьте его между тегами <body> и </body> вашего HTML-файла.

Настройка виджета

В видео показано, как внедрить скрипт виджета на любую веб-страницу.

Использование конкретной версии

Вы можете указать, какую версию файла web.js из пакета osmi-ai-embed использовать. Полный список версий доступен по ссылке: нужна ссылка

<script type="module">
  import Chatbot from 'https://cdn.jsdelivr.net/npm/osmi-ai-embed@<some-version>/dist/web.js';
  Chatbot.init({
    chatflowid: 'your-chatflowid-here',
    apiHost: 'your-apihost-here',
  })
</script>

Начиная с версии osmi-ai v2.1.0 изменён механизм работы потоковой передачи (streaming). Если ваша версия osmi-ai ниже этой, встроенный чат-бот может не получать сообщения.

Вы можете либо обновить osmi-ai до версии v2.1.0 и выше, либо, если по каким-то причинам обновлять osmi-ai не хотите, указать последнюю версию osmi-ai-embed из ветки v1.x.x. Последняя поддерживаемая версия файла web.js — v1.3.14

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

Можно передать объект chatflowConfig, чтобы переопределить существующую конфигурацию (аналогично API).

Вы можете передать объект Config агента в формате JSON, чтобы переопределить существующие настройки. Это то же самое, что и в API, описанном в этом руководстве.

<script type="module">
  import Chatbot from 'https://cdn.jsdelivr.net/npm/osmi-ai-embed/dist/web.js';
  Chatbot.init({
    chatflowid: 'your-chatflowid-here',
    apiHost: 'your-apihost-here',
    chatflowConfig: {
      "sessionId": "123",
      "returnSourceDocuments": true
    }
  })
</script>

Конфигурация наблюдателя

Позволяет выполнять код в основном окне (родительском) на основе наблюдаемых сигналов внутри чатбота.

<script type="module">
  import Chatbot from 'https://cdn.jsdelivr.net/npm/osmi-ai-embed/dist/web.js';
  Chatbot.init({
    chatflowid: 'your-chatflowid-here',
    apiHost: 'your-apihost-here',
    observersConfig: {
      // User input has changed
      observeUserInput: (userInput) => {
        console.log({ userInput });
      },
      // The bot message stack has changed
      observeMessages: (messages) => {
        console.log({ messages });
      },
      // The bot loading signal changed
      observeLoading: (loading) => {
        console.log({ loading });
      },
    },
  })
</script>

Тема

Вы можете изменить внешний вид встроенного чатбота и включить такие функции, как подсказки, отказ от ответственности, пользовательские приветственные сообщения и многое другое, используя свойство theme. Это даёт возможность глубокой настройки внешнего вида и интерфейса виджета, включая:

  • Кнопка: позиция, размер, цвет, иконка, поведение при перетаскивании и автоматическое открытие.
  • Подсказка: видимость, текст сообщения, цвет фона, цвет текста и размер шрифта.
  • Отказ от ответственности: заголовок, сообщение, цвета текста, кнопок и фона, а также опция размытого наложения.
  • Окно чата: заголовок, отображение сообщений агента и пользователя, приветственные и ошибки сообщения, цвет фона или изображение, размеры, размер шрифта, стартовые подсказки, поддержка HTML, стили сообщений (цвета, аватары), поведение текстового ввода (подсказки, цвета, ограничения по символам, звуки), опции обратной связи, отображение даты и времени, а также настройка нижнего колонтитула.
  • Пользовательский CSS: возможность напрямую вставлять CSS-код для более точной настройки внешнего вида, переопределяя стандартные стили (см. инструкцию ниже).
<script type="module">
  import Chatbot from 'https://cdn.jsdelivr.net/npm/osmi-ai-embed/dist/web.js';
  Chatbot.init({
    chatflowid: 'your-chatflowid-here',
    apiHost: 'your-apihost-here',
    theme: {
      button: {
        backgroundColor: '#3B81F6',
        right: 20,
        bottom: 20,
        size: 48, // small | medium | large | number
        dragAndDrop: true,
        iconColor: 'white',
        customIconSrc: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/svg/google-messages.svg',
        autoWindowOpen: {
          autoOpen: true, //parameter to control automatic window opening
          openDelay: 2, // Optional parameter for delay time in seconds
          autoOpenOnMobile: false, //parameter to control automatic window opening in mobile
        },
      },
      tooltip: {
        showTooltip: true,
        tooltipMessage: 'Hi There 👋!',
        tooltipBackgroundColor: 'black',
        tooltipTextColor: 'white',
        tooltipFontSize: 16,
      },
      disclaimer: {
        title: 'Disclaimer',
        message: 'By using this chatbot, you agree to the <a target="_blank" href="https://osmi-ai.com/terms">Terms & Condition</a>',
        textColor: 'black',
        buttonColor: '#3b82f6',
        buttonText: 'Start Chatting',
        buttonTextColor: 'white',
        blurredBackgroundColor: 'rgba(0, 0, 0, 0.4)', //The color of the blurred background that overlays the chat interface
        backgroundColor: 'white',
      },
      customCSS: ``, // Add custom CSS styles. Use !important to override default styles
      chatWindow: {
        showTitle: true,
        showAgentMessages: true,
        title: 'osmi-ai Bot',
        titleAvatarSrc: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/svg/google-messages.svg',
        titleTextColor: '#ffffff',
        titleBackgroundColor: '#3B81F6',
        welcomeMessage: 'Hello! This is custom welcome message',
        errorMessage: 'This is a custom error message',
        backgroundColor: '#ffffff',
        backgroundImage: 'enter image path or link', // If set, this will overlap the background color of the chat window.
        height: 700,
        width: 400,
        fontSize: 16,
        starterPrompts: ['What is a bot?', 'Who are you?'], // It overrides the starter prompts set by the chat flow passed
        starterPromptFontSize: 15,
        clearChatOnReload: false, // If set to true, the chat will be cleared when the page reloads
        sourceDocsTitle: 'Sources:',
        renderHTML: true,
        botMessage: {
          backgroundColor: '#f7f8ff',
          textColor: '#303235',
          showAvatar: true,
          avatarSrc: 'https://raw.githubusercontent.com/zahidkhawaja/langchain-chat-nextjs/main/public/parroticon.png',
        },
        userMessage: {
          backgroundColor: '#3B81F6',
          textColor: '#ffffff',
          showAvatar: true,
          avatarSrc: 'https://raw.githubusercontent.com/zahidkhawaja/langchain-chat-nextjs/main/public/usericon.png',
        },
        textInput: {
          placeholder: 'Type your question',
          backgroundColor: '#ffffff',
          textColor: '#303235',
          sendButtonColor: '#3B81F6',
          maxChars: 50,
          maxCharsWarningMessage: 'You exceeded the characters limit. Please input less than 50 characters.',
          autoFocus: true, // If not used, autofocus is disabled on mobile and enabled on desktop. true enables it on both, false disables it on both.
          sendMessageSound: true,
          // sendSoundLocation: "send_message.mp3", // If this is not used, the default sound effect will be played if sendSoundMessage is true.
          receiveMessageSound: true,
          // receiveSoundLocation: "receive_message.mp3", // If this is not used, the default sound effect will be played if receiveSoundMessage is true.
        },
        feedback: {
          color: '#303235',
        },
        dateTimeToggle: {
          date: true,
          time: true,
        },
        footer: {
          textColor: '#303235',
          text: 'Powered by',
          company: 'osmi-ai',
          companyLink: 'https://osmi-ai.com',
        },
      },
    },
  });
</script>

Примечание: смотрите полный список параметров конфигурации.

Модификация пользовательского кода

Чтобы изменить полный исходный код встроенного чат-виджета, выполните следующие шаги

1. Форкните репозиторий osmi-ai Chat Embed.

2. Выполните команду yarn install, чтобы установить необходимые зависимости.

3. После этого вы можете внести любые изменения в код.

4. Выполните команду yarn build, чтобы применить изменения.

5. Загрузите ваши изменения в ваш форк репозитория.Затем вы можете использовать ваш собственный файл web.js для вставки чат-виджета следующим образом:

Замените username на ваше имя пользователя GitHub, а forked-repo — на название вашего форк-репозитория.

<script type="module">
      import Chatbot from "https://cdn.jsdelivr.net/gh/HenryHengZJ/osmi-aiAI-Test/dist/web.js"
      Chatbot.init({
          chatflowid: "your-chatflowid-here",
          apiHost: "your-apihost-here",
      })
</script>

Модификация пользовательского CSS  (Custom CSS Modification)

Теперь вы можете напрямую добавлять кастомные CSS-стили для оформления встроенного чат-виджета, без необходимости создавать собственные файлы web.js (требуется версия v2.0.8 или выше). Это позволяет вам: - Сделать внешний вид каждого встроенного чатбота уникальным - Использовать официальный web.js — больше не нужно создавать кастомные сборки или самостоятельно хостить стили -Мгновенно обновлять стили

Вот как это использовать:

<script src="https://cdn.jsdelivr.net/gh/osmi-ai/osmi-aiAI@main/dist/web.js"></script>
<script>
  Chatbot.init({
    chatflowid: "your-chatflowid-here",
    apiHost: "your-apihost-here",
    theme: {
      // ... other theme settings
      customCSS: `
        /* Your custom CSS here */
        /* Use !important to override default styles */
      `,
    }
  });
</script>

CORS

При использовании встроенного чат-виджета возможно столкнуться с проблемой CORS, например:

❗Access to fetch at 'https://<>/api/v1/prediction/' from origin 'https://<>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Чтобы это исправить, укажите следующие переменные окружения:

CORS_ORIGINS=*
IFRAME_ORIGINS=*

при запуске через npx osmi-ai start

npx osmi-ai start --CORS_ORIGINS=* --IFRAME_ORIGINS=*

Docker: поместите переменные в osmi-ai/docker/.env

Локальный git-клон: поместите переменные в osmi-ai/packages/server/.env