No description
Find a file
2025-12-25 10:39:07 +03:00
cmd/tools Возврат результата вызова функции в LLM 2025-12-25 10:28:55 +03:00
.gitignore Обновление формирования схемы 2025-12-24 16:04:12 +03:00
embedding.go Добавление использование Эмбеддингов 2025-11-26 12:28:59 +03:00
go.mod Удаление лишних модулей 2025-12-25 10:39:07 +03:00
go.sum Удаление лишних модулей 2025-12-25 10:39:07 +03:00
http.go Добавление использование Эмбеддингов 2025-11-26 12:28:59 +03:00
LICENSE first commit 2025-11-12 11:42:46 +03:00
llm.go Возврат результата вызова функции в LLM 2025-12-25 10:28:55 +03:00
llm_test.go Добавление использование Эмбеддингов 2025-11-26 12:28:59 +03:00
README.md Добавление вызова функций 2025-12-24 15:14:14 +03:00
structs.go Возврат результата вызова функции в LLM 2025-12-25 10:28:55 +03:00
tools.go Возврат результата вызова функции в LLM 2025-12-25 10:28:55 +03:00
tools_test.go Проверка tool_calls 2025-12-24 16:24:41 +03:00
vision.go Возврат результата вызова функции в LLM 2025-12-25 10:28:55 +03:00

llm-simple-api

Go Reference License: MIT

Простая Go библиотека для взаимодействия с LLM (Language Model) API.

Описание

Библиотека предоставляет удобный интерфейс для работы с различными LLM API, включая поддержку Open-WebUI, OpenAI и других совместимых сервисов. Предоставляет функционал для отправки сообщений, управления историей чата и настройки параметров модели.

Возможности

  • Поддержка различных LLM API (Open-WebUI, OpenAI и др.)
  • Управление историей чата
  • Настройка параметров модели (температура, максимальное количество токенов)
  • Поддержка авторизации через API токены
  • Настройка TLS и таймаутов

Установка

go get git.ymnuktech.ru/ymnuk/llm-simple-api

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

package main

import (
    "fmt"
    "git.ymnuktech.ru/ymnuk/llm-simple-api/llm"
)

func main() {
    // Создание клиента с настройками из переменных окружения
    opts := &llm.LLMOpts{
        BaseUrl:   "http://localhost:11434/ollama",
        Model:     "gpt-3.5-turbo",
        Token:     stringPtr("your-api-token"),
        Timeout:   30 * time.Second,
    }
    
    client := llm.NewLLMSimpleAPI(opts)
    
    // Отправка сообщения
    message, err := client.ChatCompletions("Привет, как дела?")
    if err != nil {
        panic(err)
    }
    
    fmt.Println(message.Content)
}

Структуры данных

LLMOpts

Настройки клиента:

  • BaseUrl - базовый URL API
  • TlsVerify - включить проверку TLS
  • Timeout - таймаут запросов
  • Token - API токен
  • UserAgent - User-Agent заголовок
  • SystemPrompt - системный промпт
  • Model - модель по умолчанию
  • Temperature - температура генерации
  • MaxTokens - максимальное количество токенов
  • ImageType - тип изображения для визуальных запросов (png, jpeg/jpg)
  • MaxWidth - максимальная ширина изображения при отправке визуальных запросов
  • MaxHeight - максимальная высота изображения при отправке визуальных запросов

Message

Сообщение в чате:

  • Role - роль (user, assistant, system)
  • Content - содержание сообщения

Методы

NewLLMSimpleAPI

Создание нового клиента LLM.

ChatCompletions

Отправка запроса в модель и получение ответа.

ClearHistory

Очистка истории чата.

GetHistory

Получение текущей истории чата.

SendVisionRequest

Отправка запроса с изображением в модель, поддерживающую визуальное восприятие. Функция принимает текстовый запрос и изображение в формате image.Image, преобразует изображение в base64 строку с учетом настроек формата и размера из LLMOpts, и отправляет вместе с текстовым запросом в модель.

Функциональность инструментов

Библиотека включает в себя мощную систему инструментов, которая позволяет регистрировать пользовательские функции, которые могут вызываться LLM. Это обеспечивает возможности вызова функций, аналогичные вызову функций в OpenAI.

Возможности

  • Автоматическая генерация JSON-схемы: Автоматически генерирует JSON-схему из Go-структур с использованием рефлексии
  • Регистрация функций: Регистрируйте любую функцию с правильной сигнатурой, чтобы сделать её доступной для LLM
  • Автоматическая отправка инструментов: Зарегистрированные инструменты автоматически отправляются с запросами в LLM
  • Автоматическая обработка вызовов инструментов: Библиотека автоматически обрабатывает вызовы инструментов от LLM и возвращает результаты
  • Интеграция с LLMSimpleAPI: Инструменты интегрированы непосредственно в структуру LLMSimpleAPI

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

Для использования функциональности инструментов:

  1. Определите структуру параметров с JSON-тегами:

    type WeatherParams struct {
        Location string `json:"location" description:"Местоположение для получения погоды"`
    }
    
  2. Определите функцию с сигнатурой func(params SomeStruct) (interface{}, error):

    func GetWeather(params WeatherParams) (interface{}, error) {
        return WeatherResult{
            Temperature: 22.5,
            Location: params.Location,
            Condition: "Солнечно",
        }, nil
    }
    
  3. Зарегистрируйте инструмент с экземпляром LLMSimpleAPI:

    api := llm.NewLLMSimpleAPI(nil)
    api.RegisterTool("get_weather", "Получить информацию о погоде для местоположения", GetWeather)
    
  4. Используйте обычные методы для общения с LLM - инструменты будут автоматически отправлены:

    message, err := api.ChatCompletions("Какая погода в Москве?")
    // Если LLM решит вызвать инструмент, библиотека автоматически выполнит вызов
    // и отправит результат обратно в LLM для получения окончательного ответа
    

Функциональность инструментов автоматически обрабатывает:

  • Генерацию JSON-схемы из определений структур
  • Автоматическую отправку инструментов с запросами в LLM
  • Синтаксический анализ и проверку аргументов
  • Выполнение вызовов инструментов и возврат результатов в LLM
  • Обработку ошибок
  • Форматирование ответов