Перейти к основному содержимому

LLM

Платформа Compressa включает в себя готовый модуль для быстрого и выгодного инференса open-source LLM моделей на вашем сервере. Мы уже применили лучшие техники оптимизации на уровне инфраструктуры, чтобы вы экономили на расходах и улучшали опыт пользователей.

В рамках облачной версии мы даем тестовое API для одной из актуальных open-source моделей (например, Qwen или Llama), но с ограничениями по нагрузке.

Вы можете взаимодействовать с LLM через нашу Python библиотеку для Langchain или через прямой cURL запрос.

Кроме этого, наши API совместимы с OpenAI, подробнее на отдельной странице.

Вызов модели без стриминга

#pip install langchain-compressa - если у вас еще нет этого пакета
#pip install langchain-core - если у вас еще нет этого пакета
#pip install langchain - если у вас еще нет этого пакета

from langchain_compressa import ChatCompressa

llm = ChatCompressa(
base_url="https://compressa-api.mil-team.ru/v1", #при локальном запуске замените на ваш url, например http://localhost:8080/api/v1/chat/completions
api_key="Ваш_API_ключ_Compressa", #при локальном запуске вы можете не требовать ключ или создать свой
temperature=0.7,
max_tokens=150,
stream="false"
)

messages = [
("system", "Ты полезный помощник, который переводит с русского на английский. Переведи предложение пользователя."),
("human", "Я люблю программирование.")
]

ai_msg = llm.invoke(messages)
print(f"Ответ модели: {ai_msg.content}")

# Ответ модели: I love programming.

Также приведем пример использования LLM в рамках цепочки Langchain (chains):

from langchain_compressa import ChatCompressa
from langchain_core.prompts import ChatPromptTemplate

llm = ChatCompressa(
base_url="https://compressa-api.mil-team.ru/v1", #при локальном запуске замените на ваш url, например http://localhost:8080/api/v1/chat/completions
api_key="Ваш_API_ключ_Compressa", #при локальном запуске вы можете не требовать ключ или создать свой
temperature=0.7,
max_tokens=150,
stream="false"
)

prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"Ты полезный помощник, который переводит с {input_language} на {output_language}.",
),
("human", "{input}"),
]
)

chain = prompt | llm
result = chain.invoke(
{
"input_language": "русский",
"output_language": "английский",
"input": "Я люблю программирование.",
}
)

print(f"Результат цепочки: {result.content}")

# Результат цепочки: I love programming.

Вызов модели с опцией стриминга ответа

import requests

response = requests.post(
url="https://compressa-api.mil-team.ru/v1/chat/completions", #при локальном запуске замените на ваш url, например http://localhost:8080/api/v1/chat/completions
headers={
"Authorization": "Bearer Ваш_API_ключ_Compressa", #при локальном запуске вы можете не требовать ключ или создать свой
"accept": "application/json",
"Content-Type": "application/json"
},
json={
"model": "Compressa-LLM",
"messages": [
{
"role": "system",
"content": "You are an expert in soccer"
},
{
"role": "user",
"content": "Напиши сказку на ночь про добрый искусственный интеллект!"
}
],
"max_tokens": 512,
"temperature": 0.7,
"stream": True
}
)

for chunk in response.iter_content(chunk_size=None):
if chunk:
print(chunk.decode('utf-8'))

# Пример данных:
# data: {"id":"126","object":"chat.completion.chunk","created":1728680725,"model":"Compressa-LLM","choices":[{"index":0,"delta":{"role":"assistant","content":"В"},"logprobs":null,"finish_reason":null}],"usage":null}
# data: {"id":"126","object":"chat.completion.chunk","created":1728680725,"model":"Compressa-LLM","choices":[{"index":0,"delta":{"role":"assistant","content":" дав"},"logprobs":null,"finish_reason":null}],"usage":null}
# ...