learn.chetana.fr

Framework ou SDK natif : le choix du projet

12 min de lectureEssentiel

Le constat dans le code

Dans le pyproject.toml du projet : langchain-core seulement — pas de langchain, pas de langchain-anthropic. Le LLM est appelĂ© au SDK natif (module 4), l'orchestration est LangGraph pur (module 6), et langchain-core n'est lĂ  que comme socle de LangGraph (les types de base, RunnableConfig).

Ce que le framework coûte (et qui a motivé le choix)

  1. Le contrĂŽle chirurgical du provider : les breakpoints de prompt caching, output_config.effort, la gestion fine de stop_reason=max_tokens, les Ă©vĂ©nements de stream input_json_delta
 sont des features Anthropic pointues. À travers l'abstraction multi-provider, elles arrivent tard, Ă  moitiĂ©, ou pas du tout — et la latence/facture s'en ressentent directement ;
  2. La profondeur de pile : un bug dans prompt | llm | parser traverse des dizaines de frames de Runnables ; l'équivalent SDK a une stack de trois niveaux, et le prompt exact envoyé se logge trivialement ;
  3. La vélocité de l'écosystÚme : les versions bougent vite ; moins de couches = moins de migrations subies ;
  4. Le besoin rĂ©el : le projet n'a pas besoin de 50 intĂ©grations — il a UN provider principal, deux annexes (Cohere, Mistral), et ses propres abstractions fines (LLMRuntime, ToolBus) taillĂ©es pour ses invariants (model_view/ui_events, idempotence).

Ce que le framework apporte (et quand le choisir)

Prototypage Ă©clair, intĂ©grations innombrables (vector stores, loaders, providers), standardisation d'Ă©quipe, et l'entrĂ©e naturelle vers LangGraph/LangSmith. L'arbre de dĂ©cision honnĂȘte :

  • POC, exploration multi-providers, Ă©quipe junior, besoin d'intĂ©grations variĂ©es → LangChain complet ;
  • produit mĂ»r, un provider dominant, exigences fines de coĂ»t/latence/privacy → SDK natif + LangGraph pour l'orchestration (le choix du projet) ;
  • dans tous les cas : les concepts (messages, tools, structured output) sont les mĂȘmes — c'est l'Ă©paisseur de la couche qui change.
đŸ§© Quiz1/3

Pourquoi le projet garde-t-il langchain-core malgré son choix « SDK natif » ?

🃏 Flashcards1/4