Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 074новые вакансии за сутки·91 191вакансия открыта сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 116
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 410 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 172
  • Облачные технологии14 136
  • QA вакансии3 451
  • Backend вакансии2 051
  • Инженер данных1 762
  • Продакт-менеджер1 226

Разработка

  • Android1 854
  • iOS1 694
  • Fullstack вакансии978
  • AI вакансии944
  • Frontend вакансии735
  • Mobile вакансии43

По стеку

  • Go8 740
  • Java6 589
  • Node.js2 029
  • .NET1 734
  • Kotlin1 615
  • Rust1 473
  • C#715
  • PHP692
  • C++581

DevOps и инфраструктура

  • Kubernetes7 760
  • DevOps вакансии6 073
  • Linux-инфраструктура5 498
  • Terraform / IaC4 270
  • CI/CD3 273
  • Мониторинг и Observability1 791
  • SRE553
  • Кибербезопасность444

Аналитика и данные

  • Data Scientist1 115
  • Бизнес-аналитик916
  • Аналитик данных832
  • Системный аналитик153

Другие направления

  • Проджект-менеджер606
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США42 450
  • Вакансии в Европе23 519
  • Вакансии в Канаде4 333
  • Работа в России3 786

По формату

  • Удалённые вакансии72 089
  • Релокация в США42 450
  • Гибридная работа12 458
  • Офисная работа7 066

По уровню

  • Senior вакансии41 491
  • Middle вакансии20 265
  • Junior вакансии6 499

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме LangChainВсе вопросы
LangChainSeniorПроектирование систем

Что такое агенты (agents) в LangChain и чем они отличаются от цепочек (chains)?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Цепочка (Chain) — детерминированная последовательность шагов через LCEL; агент — цикл рассуждений, где LLM динамически выбирает инструменты. Для новых проектов вместо AgentExecutor рекомендуется LangGraph.

Пример цепочки (LCEL)

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
prompt = ChatPromptTemplate.from_messages([
    ("system", "Ты помощник по коду."),
    ("human", "{question}"),
])

chain = prompt | llm | StrOutputParser()
result = chain.invoke({"question": "Что такое декоратор в Python?"})
print(result)

Цепочки (Chains) и агенты (Agents): в чём разница

Цепочка — детерминированный граф шагов. Последовательность выполнения задаётся разработчиком заранее и не меняется в runtime. Используется RunnableSequence или LCEL (LangChain Expression Language).

Агент — цикл рассуждений (ReAct, function-calling), в котором LLM самостоятельно решает, какой инструмент вызвать и когда остановиться. Управляющий цикл реализован в AgentExecutor или через LangGraph.

Пример агента (с инструментами)

from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.tools import tool

@tool
def get_word_count(text: str) -> int:
    """Возвращает количество слов в тексте."""
    return len(text.split())

llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages([
    ("system", "Ты полезный ассистент."),
    MessagesPlaceholder("chat_history", optional=True),
    ("human", "{input}"),
    MessagesPlaceholder("agent_scratchpad"),
])

agent = create_tool_calling_agent(llm, [get_word_count], prompt)
executor = AgentExecutor(agent=agent, tools=[get_word_count], verbose=True)

result = executor.invoke({"input": "Сколько слов в предложении 'Hello world foo bar'?"})
print(result["output"])

Ключевые различия

  • Детерминизм: цепочка выполняет фиксированные шаги; агент выбирает шаги динамически через LLM-рассуждение.
  • Инструменты: цепочка может вызывать функции, но последовательность заранее известна; агент сам решает, нужен ли tool call и сколько раз.
  • Стоимость: агент делает несколько LLM-запросов на один user-запрос; цепочка — один (если нет промежуточных LLM-шагов).
  • Отладка: цепочку легко тестировать юнит-тестами; агент недетерминирован, поэтому нужна трассировка (LangSmith, `verbose=True`).
  • LangGraph: современная рекомендация для сложных агентов — langgraph вместо AgentExecutor, поскольку даёт явный граф состояний.

Подводные камни

  • Агент может зациклиться: установите max_iterations в AgentExecutor, иначе бесконечный цикл tool calls съест бюджет.
  • Путаница между agent_scratchpad в prompt и памятью чата: без MessagesPlaceholder("agent_scratchpad") агент не получает историю tool calls и ломается.
  • LCEL-цепочки не сохраняют состояние между вызовами — если нужна история диалога, добавляйте RunnableWithMessageHistory явно.
  • AgentExecutor deprecated в пользу LangGraph — новые проекты должны использовать langgraph.prebuilt.create_react_agent.
  • Параллельные tool calls (GPT-4o поддерживает) могут вернуть результаты не в том порядке — AgentExecutor обрабатывает их, но кастомные агенты — нет.
  • Streaming в агентах: используйте executor.astream_events(), а не astream(), иначе промежуточные tool-результаты не отдаются клиенту.
  • Ошибки внутри tool молча проглатываются, если не передать handle_tool_errors=True — агент может зависнуть на одном tool call.
  • Версионирование: langchain, langchain-core, langchain-openai — отдельные пакеты с отдельными версиями; несовместимость частая причина ValidationError.

Частые вопросы на собеседовании

  • Как работают инструменты (tools) в LangChain и как создать кастомный инструмент?
  • Что такое RAG (Retrieval-Augmented Generation) и как реализовать его с помощью LangChain?
  • В чём разница между invoke(), stream() и batch() в интерфейсе Runnable в LangChain?
  • Что такое LCEL (LangChain Expression Language) и как он использует оператор | для компоновки цепочек?

Типичные ошибки

  • Объяснять agents vs chains только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать agents vs chains с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.
  • Предлагает ли observability, rollback, ограничения стоимости и стратегию incident replay.

Как вы знаете этот вопрос?

Проверить себя по теме LangChain →

Источники

  • https://docs.langchain.com/oss/python/langchain/agents
  • https://docs.langchain.com/oss/python/langchain/models

Связанные темы

LangChaindata-aiobservabilityproduction-ml