Использование API Compressa
В Compressa есть интегрированный API-слой, совместимый с Chat Completion API от OpenAI. Это означает, что разработчики могут использовать существующую клиентскую библиотеку от OpenAI (включая библиотеку на Langchain) и адаптировать текущий код с минимальными изменениями для работы с Compressa.
Полная схема REST API, совместимого с OpenAI, доступна здесь.
Вот как заменить модели OpenAI на Compressa
- Python (клиент OpenAI)
- Python (OpenAI Langchain)
from openai import OpenAI
client = OpenAI(
base_url="https://compressa-api.mil-team.ru/v1",
api_key="Ваш_API_ключ_Compressa"
)
response = client.chat.completions.create(
model="Compressa-LLM",
messages=[
{"role": "system", "content": "Ты умеешь сочинять смешные анекдоты."},
{"role": "user", "content": "Напиши короткий и смешной анекдот про программиста."}
],
stream=False
)
print(response.choices[0].message.content)
# pip install langchain langchain-openai openai
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
llm = ChatOpenAI(
base_url="https://compressa-api.mil-team.ru/v1",
api_key="Ваш_API_ключ_Compressa",
model="Compressa-LLM"
)
messages = [
SystemMessage(content="Ты умеешь сочинять смешные анекдоты."),
HumanMessage(content="Напиши короткий и смешной анекдот про программиста."),
]
ai_msg = llm.invoke(messages)
print(f"Ответ модели: {ai_msg.content}")
Также вы можете включить опцию стриминга токенов, доступную в клиенте OpenAI
#pip install openai - если у вас еще нет этого пакета
from openai import OpenAI
client = OpenAI(
base_url="https://compressa-api.mil-team.ru/v1",
api_key="Ваш_API_ключ_Compressa"
)
completion = client.chat.completions.create(
model="Compressa-LLM",
messages=[
{"role": "system", "content": "Ты умеешь сочинять смешные анкедоты."},
{"role": "user", "content": "Напиши короткий и смешной анекдот про программиста."}
],
stream=True
)
for chunk in completion:
print(chunk.choices[0].delta)
#ChoiceDelta(content='Б', function_call=None, refusal=None, role='assistant', tool_calls=None)
#ChoiceDelta(content='ы', function_call=None, refusal=None, role='assistant', tool_calls=None)
#ChoiceDelta(content='л', function_call=None, refusal=None, role='assistant', tool_calls=None)
#ChoiceDelta(content=' у', function_call=None, refusal=None, role='assistant', tool_calls=None)
#...