Rastreamento de LangChain
O LangChain é uma estrutura de código aberto para a criação de aplicativos com tecnologia LLM.
O MLflow Tracing fornece o recurso de rastreamento automático para o LangChain. O senhor pode habilitar o rastreamento
para LangChain chamando a função mlflow.langchain.autolog
, e os rastreamentos aninhados são automaticamente registrados na experiência MLflow ativa ao invocar as cadeias.
import mlflow
mlflow.langchain.autolog()
Pré-requisitos
Para usar o MLflow Tracing com o LangChain, o senhor precisa instalar o MLflow e o pacote LangChain relevante (por exemplo, langchain
, langchain-openai
).
- Development
- Production
Para ambientes de desenvolvimento, instale o pacote MLflow completo com Databricks extras e LangChain pacote:
pip install --upgrade "mlflow[databricks]>=3.1" langchain langchain-openai
# Add other langchain community/core packages if needed
O pacote completo do mlflow[databricks]
inclui todos os recursos para desenvolvimento local e experimentação no Databricks.
Para implementações de produção, instale mlflow-tracing
e LangChain pacote:
pip install --upgrade mlflow-tracing langchain langchain-openai
# Add other langchain community/core packages if needed
O pacote mlflow-tracing
é otimizado para uso na produção.
O MLflow 3 é altamente recomendado para obter a melhor experiência de rastreamento com o LangChain. Se o senhor tiver problemas, verifique o exemplo abaixo para obter versões compatíveis específicas do LangChain pacote.
Antes de executar os exemplos, você precisará configurar seu ambiente:
Para usuários fora do Databricks Notebook : Defina seu Databricks variável de ambiente:
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Para usuários do Databricks Notebook : Essas credenciais são definidas automaticamente para o senhor.
API chave : Verifique se a chave do provedor LLM API está definida:
export OPENAI_API_KEY="your-openai-api-key"
# Add other provider keys as needed
Exemplo de uso
import mlflow
import os
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
# Ensure your OPENAI_API_KEY (or other LLM provider keys) is set in your environment
# os.environ["OPENAI_API_KEY"] = "your-openai-api-key" # Uncomment and set if not globally configured
# Enabling autolog for LangChain will enable trace logging.
mlflow.langchain.autolog()
# Set up MLflow tracking to Databricks
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/Shared/langchain-tracing-demo")
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7, max_tokens=1000)
prompt_template = PromptTemplate.from_template(
"Answer the question as if you are {person}, fully embodying their style, wit, personality, and habits of speech. "
"Emulate their quirks and mannerisms to the best of your ability, embracing their traits—even if they aren't entirely "
"constructive or inoffensive. The question is: {question}"
)
chain = prompt_template | llm | StrOutputParser()
# Let's test another call
chain.invoke(
{
"person": "Linus Torvalds",
"question": "Can I just set everyone's access to sudo to make things easier?",
}
)
O exemplo acima foi confirmado como funcionando com as seguintes versões de requisitos:
pip install openai==1.30.5 langchain==0.2.1 langchain-openai==0.1.8 langchain-community==0.2.1 mlflow==2.14.0 tiktoken==0.7.0
APIs suportadas
As seguintes APIs são compatíveis com o rastreamento automático para LangChain.
invoke
batch
stream
ainvoke
abatch
astream
get_relevant_documents
(para retrievers)__call__
(para Chains e AgentExecutors)
Personalize o comportamento de rastreamento
Às vezes, o senhor pode querer personalizar quais informações são registradas nos traces. Você pode fazer isso criando um manipulador de retorno de chamada personalizado que herda de mlflow.langchai.langchain_tracer.MlflowLangchainTracer
. O MlflowLangchainTracer é um manipulador de retorno de chamada que é injetado no processo de inferência do modelo langchain para log traces automaticamente. Ele inicia um novo intervalo em um conjunto de ações da cadeia, como on_chain_start, on_llm_start, e o conclui quando a ação é finalizada. Vários metadados, como tipo de intervalo, nome da ação, entrada, saída e latência, são gravados automaticamente no intervalo.
O exemplo a seguir demonstra como registrar um atributo adicional no intervalo quando um modelo de bate-papo começa a ser executado.
from mlflow.langchain.langchain_tracer import MlflowLangchainTracer
class CustomLangchainTracer(MlflowLangchainTracer):
# Override the handler functions to customize the behavior. The method signature is defined by LangChain Callbacks.
def on_chat_model_start(
self,
serialized: Dict[str, Any],
messages: List[List[BaseMessage]],
*,
run_id: UUID,
tags: Optional[List[str]] = None,
parent_run_id: Optional[UUID] = None,
metadata: Optional[Dict[str, Any]] = None,
name: Optional[str] = None,
**kwargs: Any,
):
"""Run when a chat model starts running."""
attributes = {
**kwargs,
**metadata,
# Add additional attribute to the span
"version": "1.0.0",
}
# Call the _start_span method at the end of the handler function to start a new span.
self._start_span(
span_name=name or self._assign_span_name(serialized, "chat model"),
parent_run_id=parent_run_id,
span_type=SpanType.CHAT_MODEL,
run_id=run_id,
inputs=messages,
attributes=kwargs,
)
Desativar o rastreamento automático
O rastreamento automático para LangChain pode ser desativado globalmente chamando mlflow.langchain.autolog(disable=True)
ou mlflow.autolog(disable=True)
.