Интеграция локального LLM с 1С: пошаговая схема

DevOps/AI Engineer
#1C #Integration #API #LLM

Архитектура

1С:Предприятие (клиент) → HTTP-запрос (JSON) → Middleware (Node.js/FastAPI)vLLM / TGILLM → ответ → 1С.

1С не умеет в длинные промпты и потоковую генерацию напрямую. Нужен middleware.

Шаг 1. Поднимаем LLM-сервер vLLM с API, совместимым с OpenAI

python -m vllm.entrypoints.openai.api_server
—model meta-llama/Llama-2-7b-chat-hf
—api-key secret-key
—port 8000

Шаг 2. Пишем middleware (FastAPI)

from fastapi import FastAPI, HTTPException from pydantic import BaseModel import httpx

app = FastAPI()

class PromptRequest(BaseModel): doc_id: str user_question: str

@app.post(“/generate”) async def generate(req: PromptRequest): # 1. Достаём документ из базы 1С (через REST или ODATA) # 2. Формируем промпт: prompt = f”Контекст: {doc_content}\nВопрос: {req.user_question}\nОтвет:” # 3. Шлём в vLLM async with httpx.AsyncClient() as client: resp = await client.post( “http://localhost:8000/v1/completions”, headers={“Authorization”: “Bearer secret-key”}, json={“prompt”: prompt, “max_tokens”: 256} ) return resp.json()

Шаг 3. Запрос из 1С

// 1С: ВнешняяОбработка Запрос = Новый HTTPЗапрос(); Запрос.URL = “http://middleware-server:8080/generate”; Запрос.Метод = “POST”; Запрос.Заголовки.Вставить(“Content-Type”, “application/json”);

Данные = Новый Структура(); Данные.Вставить(“doc_id”, “Документ-001”); Данные.Вставить(“user_question”, “Какова себестоимость?”);

Запрос.ТелоКакСтрока = JSON.Записать(Данные);

Соединение = Новый HTTPСоединение(); Ответ = Соединение.Выполнить(Запрос);

Результат = JSON.Прочитать(Ответ.ТелоКакСтрока).Ответ; Сообщить(Результат);

Итог

1С → HTTP-запрос к middleware (без прямого доступа к LLM).

Middleware → авторизация, валидация, форматирование промпта.

LLM возвращает JSON → 1С показывает ответ.

Готово. Данные не покидают периметр.