### Подготовка чата для LLM (Python) Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Класс `PrepareChat` форматирует сообщения для LLM в стиле Langchain. Он всегда возвращает список сообщений. Если предоставлен только системный промпт, добавляется пустое сообщение пользователя для совместимости с некоторыми моделями. ```Python class PrepareChat: def __init__(self): pass def __call__(self, messages): # Логика подготовки сообщений в формате Langchain if not messages: return [] # Пример: если есть только системное сообщение, добавить пустое пользовательское if len(messages) == 1 and messages[0]['role'] == 'system': messages.append({'role': 'user', 'content': ''}) return messages ``` -------------------------------- ### Установка LLM Service Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Инструкции по установке библиотеки 'universal-llm-service' с использованием различных пакетных менеджеров, таких как uv, pip и poetry. Также показана возможность установки для конкретных провайдеров LLM. ```Shell # Через uv uv add "universal-llm-service[all]" # Через pip pip install "universal-llm-service[all]" # Через poetry poetry add "universal-llm-service[all]" # Можно установить для конкретного провайдера [anthropic] [cerebras] [deepseek] [gigachat] [gemini] [openai] [openrouter] [xai] ``` -------------------------------- ### Создание экземпляра LLMService Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Пример создания экземпляра LLMService, аналогичного созданию экземпляра ChatOpenAI из Langchain. Показывает, как инициализировать модель с указанием имени модели, API ключа и температуры. ```Python from llm.constructor import BaseLLM gpt_4o_mini = BaseLLM( model='gpt-4o-mini', api_key='sk-proj-1234567890', temperature=0, ) ``` -------------------------------- ### Потоковый вывод LLM Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Пример асинхронного получения потокового вывода от LLMService. Демонстрирует, как итерироваться по чанкам ответа и как получить полный текст ответа после завершения потока, вместе с информацией об использовании. ```Python import asyncio from example.llm_config import gpt_4o_mini # noqa: F401 from llm.service import LLMService async def main() -> None: llm = await LLMService.create(gpt_4o_mini.to_dict()) stream = await llm.astream(message='Кратко расскажи что такое Python') async for chunk in stream: print(chunk, end='', flush=True) print(' ') print(stream.full_text) # Полный текст стрима print(llm.usage) # Использование в токенах и деньгах print(llm.usd_rate) # Курс доллара print(llm.chat_json) # Весь чат в json if __name__ == '__main__': asyncio.run(main()) ``` -------------------------------- ### Обычный диалог с LLM Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Пример асинхронного вызова LLMService для ведения диалога. Демонстрирует, как создать экземпляр сервиса, отправить сообщение и получить ответ, а также получить информацию об использовании токенов и стоимости. ```Python import asyncio from llm import LLMService from llm_config import gpt_4o_mini async def main(): llm = await LLMService.create(gpt_4o_mini.to_dict()) result = await llm.ainvoke(message='Сколько будет 2 + 2?') print(result) # Ответ от llm print(llm.usage) # Использование в токенах и деньгах print(llm.usd_rate) # Курс доллара print(llm.chat_json) # Весь чат в json if __name__ == "__main__": asyncio.run(main()) ``` -------------------------------- ### Установка зависимостей (Shell) Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Команда для установки зависимостей проекта с использованием менеджера пакетов `uv`. ```Shell uv sync ``` -------------------------------- ### Структурированный вывод LLM Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Пример использования LLMService для получения структурированного вывода в формате Pydantic модели. Показывает, как настроить LLM для возврата данных в определенной схеме и как получить результат вместе с информацией об использовании. ```Python import asyncio from pydantic import BaseModel, Field from llm_config import gpt_4o_mini from llm import LLMService class RelatedConceptOutput(BaseModel): """Новый термин и его сила связи с исходным термином.""" title: str = Field(..., description='Название термина') length: int = Field(..., description='Сила связи') class RelatedConceptListOutput(BaseModel): """Новые термины и их сила связи с исходным термином.""" concepts: list[RelatedConceptOutput] SYSTEM_PROMPT = ( 'Тебе дано понятие школьной программы: "Молекула". Сгенерируй ровно "5" понятий ' 'школьной программы, наиболее близких к этому понятию.' ) async def main() -> None: llm = await LLMService.create(gpt_4o_mini.to_dict()) structured_llm = await llm.with_structured_output(RelatedConceptListOutput) result = await structured_llm.ainvoke(message=SYSTEM_PROMPT) print(result) # Ответ от llm print(structured_llm.usage) # Использование в токенах и деньгах print(structured_llm.usd_rate) # Курс доллара print(structured_llm.chat_json) # Весь чат в json if __name__ == '__main__': asyncio.run(main()) ``` -------------------------------- ### Запуск примеров LLM (Python) Source: https://github.com/denisshahbazyan/llm_service/blob/master/README.md Примеры запуска различных сценариев взаимодействия с LLM: обычное общение, структурированный вывод и стриминг ответов. ```Python python -m example.simple ``` ```Python python -m example.structured ``` ```Python python -m example.stream ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.