Рубрики
Без рубрики

TXTAI API Галерея

В этой статье является частью серии учебников на TXTAI, семантической поисковой платформе AI. … с меткой машинного обучения, NLP, Python, Show Dev.

Эта статья является частью серии учебников на TXTAI платформа семантической поисковой платформы AI.

TXTAI API – это веб-сервис, поддерживаемый Fastapi. . Все функциональные возможности TXTAI, включая поиск сходства, добывающую маркировку QA и нулевую съемку, доступны через API.

Эта статья устанавливает TXTAI API и показывает пример, используя каждый из поддерживаемых языковых привязки для TXTAI.

Установить TXTAI и все зависимости. Поскольку эта статья использует API, нам нужно установить пакет API дополнений.

pip install txtai[api]

Первый метод, который мы попробуем – это прямой доступ через Python. Мы будем использовать маркировку с нулевым ударом для всех примеров здесь. См. Эта статья для более подробной информации о классификации с нулевой выстрелом.

import os
from IPython.core.display import display, HTML
from txtai.pipeline import Labels

def table(rows):
    html = """
    
    """

    html += ""
    for text, label in rows:
        html += "" % (text, label)
    html += "
TextLabel
%s%s
" display(HTML(html)) # Create labels model labels = Labels()

Примените этикетки для текста

data = ["Wears a red suit and says ho ho",
        "Pulls a flying sleigh",
        "This is cut down and decorated",
        "Santa puts these under the tree",
        "Best way to spend the holidays"]

# List of labels
tags = ["🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"]

# Render output to table
table([(text, tags[labels(text, tags)[0][0]]) for text in data])
Носит красный костюм и говорит холди 🎅 Santa Prose.
Тянет летающие сани 🦌 оленей
Это сокращено и украшено 🎄 Рождественская елка
Санта кладет эти под дерево 🎁 подарки
Лучший способ провести праздники 👪 семья

Еще раз мы видим силу маркировки с нулевым выстрелом. Модель не обучалась любым данным, специфичным для этого примера. Еще поражен тем, сколько знаний хранится в больших моделях NLP.

Теперь мы начнем экземпляр API для запуска оставшихся примеров. API нужен файл конфигурации для запуска. Пример ниже упрощена только для включения маркировки. Посмотреть эта ссылка Для более подробного примера конфигурации.

Экземпляр API запускается на заднем плане.

CONFIG=index.yml nohup uvicorn "txtai.api:app" &> api.log &
sleep 90

TXTAI.JS доступен через NPM и может быть установлен следующим образом.

npm install txtai

Для этого примера мы будем клонировать проект TXTAI.JS для импорта конфигурации примерной сборки.

git clone https://github.com/neuml/txtai.js

Создать labels.js.

Следующий файл представляет собой JavaScript версию примера этикеток.

import {Labels} from "txtai";
import {sprintf} from "sprintf-js";

const run = async () => {
    try {
        let labels = new Labels("http://localhost:8000");

        let data = ["Wears a red suit and says ho ho",
                    "Pulls a flying sleigh",
                    "This is cut down and decorated",
                    "Santa puts these under the tree",
                    "Best way to spend the holidays"];

        // List of labels
        let tags = ["🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"];

        console.log(sprintf("%-40s %s", "Text", "Label"));
        console.log("-".repeat(75))

        for (let text of data) {
            let label = await labels.label(text, tags);
            label = tags[label[0].id];

            console.log(sprintf("%-40s %s", text, label));
        }
    }
    catch (e) {
        console.trace(e);
    }
};

run();

Пример накладки и запуска

cd txtai.js/examples/node 
npm install
npm run build
node dist/labels.js
Text                                     Label
---------------------------------------------------------------------------
Wears a red suit and says ho ho          🎅 Santa Clause
Pulls a flying sleigh                    🦌 Reindeer
This is cut down and decorated           🎄 Christmas Tree
Santa puts these under the tree          🎁 Gifts
Best way to spend the holidays           👪 Family

Программа JavaScript показывает те же результаты, что и при наклонности бега через Python!

txtai.java объединяет со стандартными инструментами сборки Java (Richle, Maven, SBT). Ниже показано, как добавить TXTAI в качестве зависимости до серии.

implementation 'com.github.neuml:txtai.java:v2.0.0'

Для этого примера мы клонируем проект Txtai.java для импорта примерной конфигурации сборки.

git clone https://github.com/neuml/txtai.java

Создать labelsdemo.java

Следующий файл представляет собой Java версию примера этикеток.

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

import txtai.API.IndexResult;
import txtai.Labels;

public class LabelsDemo {
    public static void main(String[] args) {
        try {
            Labels labels = new Labels("http://localhost:8000");

            List  data = 
                Arrays.asList("Wears a red suit and says ho ho",
                              "Pulls a flying sleigh",
                              "This is cut down and decorated",
                              "Santa puts these under the tree",
                              "Best way to spend the holidays");

            // List of labels
            List tags = Arrays.asList("🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family");

            System.out.printf("%-40s %s%n", "Text", "Label");
            System.out.println(new String(new char[75]).replace("\0", "-"));

            for (String text: data) {
                List label = labels.label(text, tags);
                System.out.printf("%-40s %s%n", text, tags.get(label.get(0).id));
            }
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
cd txtai.java/examples
../gradlew -q --console=plain labels 2> /dev/null
Text                                     Label
---------------------------------------------------------------------------
Wears a red suit and says ho ho          🎅 Santa Clause
Pulls a flying sleigh                    🦌 Reindeer
This is cut down and decorated           🎄 Christmas Tree
Santa puts these under the tree          🎁 Gifts
Best way to spend the holidays           👪 Family

Программа Java демонстрирует те же результаты, что и при наклонности бега через Python!

TXTAI.RS доступен через CRATES.IO и может быть установлен, добавив следующее в свой файл Cargo.toml.

[dependencies]
txtai = { version = "2.0" }
tokio = { version = "0.2", features = ["full"] }

Для этого примера мы клонируем проект TXTAI.RS для импорта конфигурации примерной сборки. Сначала нам нужно установить ржавчину.

apt-get install rustc
git clone https://github.com/neuml/txtai.rs

Создать labels.rs.

Следующий файл представляет собой форму ржавчины примера этикеток.

use std::error::Error;

use txtai::labels::Labels;

pub async fn labels() -> Result<(), Box> {
    let labels = Labels::new("http://localhost:8000");

    let data = ["Wears a red suit and says ho ho",
                "Pulls a flying sleigh",
                "This is cut down and decorated",
                "Santa puts these under the tree",
                "Best way to spend the holidays"];

    println!("{:<40} {}", "Text", "Label");
    println!("{}", "-".repeat(75));

    for text in data.iter() {
        let tags = vec!["🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"];
        let label = labels.label(text, &tags).await?[0].id;

        println!("{:<40} {}", text, tags[label]);
    }

    Ok(())
}

Пример накладки и запуска

cd txtai.rs/examples/demo
cargo build
cargo run labels
Text                                     Label
--------------------------------------------------------------------------------
Wears a red suit and says ho ho          🎅 Santa Clause
Pulls a flying sleigh                    🦌 Reindeer
This is cut down and decorated           🎄 Christmas Tree
Santa puts these under the tree          🎁 Gifts
Best way to spend the holidays           👪 Family

Программа ржавчины показывает те же результаты, что и при наклонности бега через Python!

TXTAI.GO может быть установлен путем добавления следующего оператора импорта. При использовании модулей TXTAI.GO будет автоматически установлен. В противном случае используйте Go Get Отказ

import "github.com/neuml/txtai.go"

Для этого примера мы создадим автономный процесс для маркировки. Сначала нам нужно установить Go.

apt install golang-go
go get "github.com/neuml/txtai.go"

Создать label.go.go.

Следующий файл – это версия этикеток.

package main

import (
    "fmt"
    "strings"
    "github.com/neuml/txtai.go"
)

func main() {
    labels := txtai.Labels("http://localhost:8000")

    data := []string{"Wears a red suit and says ho ho",
                   "Pulls a flying sleigh",
                   "This is cut down and decorated",
                   "Santa puts these under the tree",
                   "Best way to spend the holidays"}

    // List of labels
    tags := []string{"🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"}

    fmt.Printf("%-40s %s\n", "Text", "Label")
    fmt.Println(strings.Repeat("-", 75))

    for _, text := range data {
        label := labels.Label(text, tags)
        fmt.Printf("%-40s %s\n", text, tags[label[0].Id])
    }
}
go run labels.go
Text                                     Label
--------------------------------------------------------------------------------
Wears a red suit and says ho ho          🎅 Santa Clause
Pulls a flying sleigh                    🦌 Reindeer
This is cut down and decorated           🎄 Christmas Tree
Santa puts these under the tree          🎁 Gifts
Best way to spend the holidays           👪 Family

Программа GO показывает те же результаты, что и при наклонности бега через Python!

Оригинал: “https://dev.to/neuml/txtai-api-gallery-20f8”