Содержимое
ellmer0.2.0 3 предыдущие поста в канале так или иначе были связаны с пакетом ellmer, и вот 17 мая на CRAN вышла его новая версия. Разбираю всё по порядку: Breaking changes ● Изменения в преобразовании JSON → R Теперь входы в tool() всегда автоматически преобразуются в стандартные структуры R (list, data.frame и т.д.). Если нужно сохранить оригинальные объекты, можно явно отключить это поведение с convert = FALSE. ● NULL → NA Функции типов (type_boolean(), type_integer() и т.д.) теперь преобразуют NULL в NA, что делает работу с необязательными параметрами более предсказуемой. ● chat_ функции теперь без turn Аргумент turn удалён. Заменой служит Chat$set_turns(). Также Chat$tokens() переименован в Chat$get_tokens() и теперь возвращает корректно выровненные токены в виде data.frame. Новые фичи ● Пакет теперь умеет в многопоточность и батчинг: ● batch_chat() и batch_chat_structured() — отправка батчей в OpenAI и Anthropic. Ответ может прийти в течение 24 часов, но стоит в 2 раза дешевле. ● parallel_chat() и parallel_chat_structured() — параллельные запросы, быстрее, но без экономии в цене. Эти функции пока экспериментальные — возможно, интерфейс будет дорабатываться. Работа с файлами: ● google_upload() — загрузка PDF, видео и других файлов для Gemini или Vertex AI. Работа с моделями: Теперь можно получить список доступных моделей у разных провайдеров: ● models_google_gemini() ● models_openai() ● models_anthropic() ● models_aws_bedrock() ● models_ollama() ● models_vllm() Возвращается data.frame с id и ценой за токены. Генерация промптов: ● interpolate() теперь векторизован: можно генерировать много промптов сразу. ● interpolate_package() — генерация из шаблонов внутри inst/prompts/. Унифицированные параметры моделей: ● chat_anthropic(), chat_openai(), chat_gemini(), chat_azure() теперь принимают аргумент params, в который можно передать temperature, seed и пр. через params(). Учёт стоимости: ● Chat$get_cost(), tokens_usage(), и сам принт объекта Chat теперь показывают оценку стоимости (в токенах и долларах). Поддержка новых провайдеров: Добавлены клиенты для: ● Hugging Face:chat_huggingface() ● Mistral: chat_mistral() ● Portkey: chat_portkey() + models_portkey() Переименования функций (с поддержкой старых имён): ● chat_azure() → chat_azure_openai() ● chat_bedrock() → chat_aws_bedrock() ● chat_gemini() → chat_google_gemini() Также обновлены дефолтные модели: ● chat_anthropic() теперь использует Sonnet 3.7 ● chat_openai() — GPT-4.1 Фичи для разработчиков: ● Chat$get_provider() — доступ к провайдеру. ● Chat$chat_async() и Chat$stream_async() поддерживают tool_mode = "sequential"/"concurrent" — влияет на последовательность вызова инструментов. ● Chat$stream() и stream_async() теперь могут стримить ContentToolRequest/Result. ● Поддержка хуков Chat$on_tool_request() и on_tool_result() — можно логировать или вмешиваться в обработку инструментов. Работа с инструментами: ● tool() теперь поддерживает .annotations (через tool_annotations()), описывающие инструменты. ● tool_reject() — отказ от вызова инструмента с объяснением, почему. Новое в ContentToolResult: ● Можно возвращать прямо из tool(). ● Теперь есть extra, request, и error поля. Мелкие улучшения и фиксы: ● Установлен кастомный User-Agent и увеличен timeout до 5 минут. ● chat_anthropic() теперь поддерживает content_image_url() и новый тип thinking. ● Новые способы аутентификации в Gemini и Vertex через GEMINI_API_KEY и Google ADC. ● chat_anthropic(max_tokens = ) теперь deprecated — используйте params =. Сам пока не обновлялся, только увидел новость о релизе. #новости_и_релизы_по_R