Construindo um agente de suporte de IA que se aprimora com Langfuse


Construir um protótipo LLM é rápido. Algumas linhas de Python, um immediate e funciona. Mas a produção é um jogo completamente diferente. Você começa a ver respostas vagas, alucinações, picos de latência e falhas estranhas onde o modelo claramente “sabe” algo, mas ainda assim erra. Como tudo funciona com base em probabilidades, a depuração torna-se complicada. Por que a busca por botas se transformou em sapatos? O sistema fez uma escolha, mas não é possível rastrear facilmente o raciocínio.

Para resolver isso, construiremos FuseCommerceum sistema avançado de suporte ao comércio eletrônico projetado para oferecer visibilidade e controle. Usando o Langfuse, criaremos um fluxo de trabalho de agente com pesquisa semântica e classificação de intenções, mantendo todas as decisões transparentes. Neste artigo, transformaremos um protótipo frágil em um sistema LLM observável e pronto para produção.

O que é Langfuse?

Langfuse funciona como uma plataforma de código aberto para engenharia LLM que permite que as equipes trabalhem juntas na depuração, análise e desenvolvimento de seus aplicativos LLM. A plataforma funciona como DevTools para agentes de IA.

O sistema oferece três funcionalidades principais que incluem:

  • Rastreamento que exibe todos os caminhos de execução através do sistema, incluindo LLM chamadas e consultas de banco de dados e uso de ferramentas.
  • Métricas que oferecem monitoramento em tempo actual de latência, custo e uso de token.
  • Avaliação que reúne suggestions do usuário por meio de um sistema positivo e negativo que se conecta diretamente à geração específica que produziu o suggestions.
  • O sistema permite testes por meio do gerenciamento de conjunto de dados, que permite aos usuários selecionar suas entradas e saídas de teste.

Neste projeto, o Langfuse funciona como nosso principal sistema de registro, o que nos ajuda a criar um sistema automatizado que aprimora seu próprio desempenho.

O que estamos criando: FuseCommerce…

Estaremos desenvolvendo um representante inteligente de suporte ao cliente para uma empresa de varejo de tecnologia chamada “FuseCommerce.”

Em contraste com um wrapper LLM padrão, os seguintes elementos serão incluídos:

  • Roteamento Cognitivo – A capacidade de analisar (pensar) o que dizer antes de responder – incluindo determinar o(s) motivo(s) da interação (ou seja, querer comprar algo versus verificar um pedido versus querer falar sobre algo).
  • Memória Semântica – A capacidade de conhecer e representar ideias como conceitos (ex: como “equipamento de jogo” e um “mouse mecânico” estão conceitualmente ligados) por meio de incorporação vetorial.
  • Raciocínio visible (incluindo uma interface de usuário impressionante) – Um meio de exibir visualmente (ao cliente) o que o agente está fazendo.
Construindo um agente de suporte de IA que se aprimora com Langfuse

O papel do Langfuse no projeto

Langfuse é a espinha dorsal do agente usado para este trabalho. Permite-nos seguir os passos únicos do nosso agente (classificação de intenção, recuperação, geração) e mostra-nos como todos funcionam em conjunto, permitindo-nos identificar onde algo correu mal se uma resposta estiver incorrecta.

  • Rastreabilidade – Procuraremos capturar todas as etapas de um agente no Langfuse usando spans. Quando um usuário recebe uma resposta incorreta, podemos usar o rastreamento de extensão ou um rastreamento para identificar exatamente onde ocorreu o erro no processo do agente.
  • Acompanhamento de sessão – Capturaremos todas as interações entre o usuário e o agente dentro de um agrupamento identificado por seu `session_id` no painel do Langfuse para nos permitir reproduzir toda a interação do usuário em termos de contexto.
  • Ciclo de Suggestions – Criaremos botões de suggestions do usuário diretamente no rastreamento, portanto, se um usuário votar negativamente em uma resposta, poderemos descobrir imediatamente qual recuperação ou immediate o usuário experimentou que o levou a votar negativamente na resposta.

Começando

Você pode iniciar o processo de instalação do agente de forma rápida e fácil.

Pré-requisitos

Instalação

A primeira coisa que você precisa fazer é instalar as seguintes dependências que consistem no SDK Langfuse e no Google IA generativa.

pip set up langfuse streamlit google-generativeai python-dotenv numpy scikit-learn 

Configuração

Depois de terminar de instalar as bibliotecas, você precisará criar um .env arquivo onde suas credenciais serão armazenadas de forma segura.

GOOGLE_API_KEY=your_gemini_key
LANGFUSE_PUBLIC_KEY=pk-lf-...
LANGFUSE_SECRET_KEY=sk-lf-...
LANGFUSE_HOST=https://cloud.langfuse.com 

Como construir?

Etapa 1: a base de conhecimento semântico

Uma pesquisa tradicional por palavra-chave pode falhar se um usuário usar palavras diferentes, ou seja, o uso de sinônimos. Portanto, queremos aproveitar Vector Embeddings para construir um mecanismo de busca semântico.

Puramente através da matemática, ou seja, Similaridade de cossenocriaremos um “vetor de significado” para cada um de nossos produtos.

# db.py
from sklearn.metrics.pairwise import cosine_similarity
import google.generativeai as genai


def semantic_search(question):
    # Create a vector illustration of the question
    query_embedding = genai.embed_content(
        mannequin="fashions/text-embedding-004",
        content material=question
    )("embedding")

    # Utilizing math, discover the closest meanings to the question
    similarities = cosine_similarity((query_embedding), product_vectors)
    return get_top_matches(similarities)

Etapa 2: O “cérebro” do roteamento inteligente

Quando os usuários dizem “Olá”, podemos classificar a intenção do usuário usando um classificador para evitar a pesquisa no banco de dados.

Você verá que também detectamos automaticamente entrada, saída e latência usando o @langfuse.observe decorador. Como mágica!

@langfuse.observe(as_type="technology")
def classify_user_intent(user_input):
    immediate = f"""
    Use the next person enter to categorise the person's intent into one of many three classes:
    1. PRODUCT_SEARCH
    2. ORDER_STATUS
    3. GENERAL_CHAT

    Enter: {user_input}
    """

    # Name Gemini mannequin right here...
    intent = "PRODUCT_SEARCH"  # Placeholder return worth

    return intent

Etapa 3: o fluxo de trabalho do agente

Nós costuramos nosso processo. O agente irá perceber, obter informações, pensar (classificar) e então agir (rotear).

Usamos o método lf_client.update_current_trace para marcar a conversa com informações de metadados, como o session_id.

@langfuse.observe()  # Root Hint
def handle_customer_user_input(user_input, session_id):
    # Tag the session
    langfuse.update_current_trace(session_id=session_id)

    # Suppose
    intent = get_classified_intent(user_input)

    # Act based mostly on labeled intent
    if intent == "PRODUCT_SEARCH":
        context = use_semantic_search(user_input)
    elif intent == "ORDER_STATUS":
        context = check_order_status(user_input)
    else:
        context = None  # Optionally available fallback for GENERAL_CHAT or unknown intents

    # Return the response
    response = generate_ai_response(context, intent)
    return response

Etapa 4: Interface do usuário e sistema de suggestions

Criamos uma interface de usuário Streamlit aprimorada. Uma mudança significativa é que os botões de suggestions fornecerão uma pontuação de suggestions ao Langfuse com base no ID de rastreamento particular person associado à conversa específica do usuário.

# app.py
col1, col2 = st.columns(2)

if col1.button("👍"):
    lf_client.rating(trace_id=trace_id, title="user-satisfaction", worth=1)

if col2.button("👎"):
    lf_client.rating(trace_id=trace_id, title="user-satisfaction", worth=0)

Entradas, saídas e análise de resultados

Vamos dar uma olhada mais de perto na consulta de um usuário: “Você vende algum acessório para sistemas de jogos?”

  1. O inquérito
  • Usuário: “Você vende algum acessório para sistemas de jogos?”
  • Contexto: Nenhuma correspondência exata na palavra-chave “acessório”.
FuseCommerce
Rastreamento recente
  1. O traço (ponto de perspectiva Langfuse)

Langfuse criará uma visualização de rastreamento para visualizar a hierarquia aninhada:

TRACE: conversa entre agente (1,5 segundos)

  • Geração: classify_intent -> Saída = PRODUCT_SEARCH
  • Período: retrieve_knowledge –> Pesquisa Semântica = mapeia geograficamente os dados do jogo para o Quantum Wi-fi Mouse e o UltraView Monitor.
  • Geração: generate_ai_response -> Output = “Sim! Para sistemas de jogos, recomendamos o Quantum Wi-fi Mouse…”

  1. Análise

Assim que o usuário clicar em positivo, Langfuse receberá uma pontuação de 1. Você terá uma soma whole de cliques em positivo por dia para visualizar a média diária. Você também terá um painel visible cumulativo para visualizar:

  • Latência média: Sua pesquisa semântica fica lenta?
  • Precisão da intenção: O roteamento é alucinante?
  • Custo / Sessão: Quanto custa usar o Gemini??

Conclusão

Através da nossa implementação do Langfuse, transformamos um sistema de chatbot com funcionamento oculto em um sistema operacional aberto e visível. Estabelecemos a confiança do usuário por meio do desenvolvimento de funções de produtos.

Provamos que nosso agente possui habilidades de “pensamento” por meio da classificação de intenções, ao mesmo tempo que pode “entender” coisas por meio da pesquisa semântica e “adquirir” conhecimento por meio de pontuações de suggestions do usuário. Este projeto arquitetônico serve de base para sistemas contemporâneos de IA que operam em ambientes do mundo actual.

Perguntas frequentes

Q1. Que problema o Langfuse resolve em aplicações LLM?

R. Langfuse fornece ferramentas de rastreamento, métricas e avaliação para depurar, monitorar e melhorar agentes LLM em produção.

Q2. Como o FuseCommerce roteia de forma inteligente as consultas dos usuários?

A. Ele usa classificação de intenção para detectar o tipo de consulta e, em seguida, direciona para pesquisa semântica, pesquisa de pedido ou lógica geral de bate-papo.

Q3. Como o sistema melhora com o tempo?

R. O suggestions do usuário é registrado por rastreamento, permitindo monitoramento de desempenho e otimização iterativa de prompts, recuperação e roteamento.

Estagiário de Ciência de Dados na Analytics Vidhya
Atualmente estou trabalhando como Trainee de Ciência de Dados na Analytics Vidhya, onde me concentro na construção de soluções baseadas em dados e na aplicação de técnicas de IA/ML para resolver problemas de negócios do mundo actual. Meu trabalho me permite explorar análises avançadas, aprendizado de máquina e aplicações de IA que capacitam as organizações a tomar decisões mais inteligentes e baseadas em evidências.
Com uma base sólida em ciência da computação, desenvolvimento de software program e análise de dados, sou apaixonado por aproveitar a IA para criar soluções impactantes e escaláveis ​​que preencham a lacuna entre tecnologia e negócios.
📩 Você também pode entrar em contato comigo em (e-mail protegido)

Faça login para continuar lendo e desfrutar de conteúdo com curadoria de especialistas.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *