Integrar o LangChain a prompt flows
A biblioteca LangChain do Python é uma estrutura para o desenvolvimento de aplicativos alimentados grandes modelos de linguagem (por LLMs), agentes e ferramentas de dependência. Esse artigo mostra como sobrecarregar o desenvolvimento do LangChain com o prompt flow do Azure Machine Learning.
A integração do LangChain com o prompt flow é uma combinação poderosa que pode ajudá-lo a criar e testar seus modelos de linguagem personalizados com facilidade. Você pode usar módulos LangChain para criar o fluxo e, em seguida, usar o processo de prompt flow para dimensionar experimentos para teste em massa, avaliação e implantação eventual. Por exemplo, você pode realizar experimentos em grande escala com base em conjuntos de dados maiores.
Se você já tiver um prompt flow local com base no código LangChain, poderá convertê-lo facilmente em um prompt flow do Azure Machine Learning para mais experimentação. Ou se você preferir usar classes e funções do SDK do LangChain diretamente, poderá criar facilmente fluxos do Azure Machine Learning com nós do Python que usam seu código LangChain personalizado.
Pré-requisitos
- Um fluxo do LangChain local que é devidamente testado e está pronto para implantação.
- Uma sessão de computação que pode executar o prompt flow do Machine Learning adicionando pacotes listados no arquivo requirements.txt, incluindo
langchain
. Para obter mais informações, consulte Gerenciar sessão de computação de prompt flow.
Converter código do LangChain em um prompt flow
Use o processo a seguir para converter seu código do LangChain local em um prompt flow do Azure Machine Learning executável.
Converter credenciais para solicitar conexão de prompt flow
Seu código do LangChain pode definir variáveis de ambiente para armazenar credenciais, como a chave de API do OpenAI do Azure necessária para invocar modelos do OpenAI do Azure. Por exemplo, o código a seguir mostra variáveis ambientais sendo definidas para tipo de API OpenAI, chave, base e versão.
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
os.environ["OPENAI_API_BASE"] = "https://contosobamiopenai.openai.azure.com/"
os.environ["OPENAI_API_KEY"] = "abc123abc123abc123abc123abc123ab"
Quando você executa um prompt flow do Azure Machine Learning na nuvem, é melhor não expor credenciais como variáveis de ambiente. Para armazenar e gerenciar credenciais separadamente do código, você deve converter as variáveis ambientais em uma conexão de prompt flow.
Para criar uma conexão que armazene credenciais personalizadas com segurança, como sua chave de API LLM ou outras chaves necessárias, siga estas instruções:
Na página Prompt flow no workspace do Azure Machine Learning, selecione a guia Conexões e, em seguida, selecione Criar.
Selecione um tipo de conexão na lista suspensa. Neste exemplo, selecione Personalizar.
No painel direito, defina o Nome da sua conexão e adicione Pares chave-valor para armazenar suas credenciais e chaves selecionando Adicionar pares chave-valor.
Para armazenar um valor criptografado para uma chave, marque a caixa de seleção é segredo ao lado de um ou mais pares chave-valor. Você deve definir pelo menos um valor como segredo para criar uma conexão personalizada com sucesso.
Selecione Salvar.
A conexão personalizada pode substituir chaves e credenciais ou variáveis ambientais correspondentes explicitamente definidas em seu código do LangChain. Para usar a conexão personalizada no fluxo, consulte Configurar conexão.
Converter código do LangChain em um fluxo executável
Para criar um fluxo, selecione Criar na página do Prompt flow no Estúdio do Azure Machine Learning e escolha um tipo de fluxo. Na página de criação de fluxo, inicie a sessão de computação antes de criar o fluxo. Selecione tipos de ferramenta na parte superior da página para inserir nós correspondentes no fluxo. Para obter instruções detalhadas de criação de fluxo, consulte Desenvolver prompt flow.
Todo os códigos do LangChain podem ser executados diretamente em nós do Python em seu fluxo, desde que sua sessão de computação contenha a dependência langchain
do pacote.
Há duas maneiras de converter seu código do LangChain em um prompt flow do Azure Machine Learning. O tipo de fluxo a ser implementado depende do seu caso de uso.
Para obter um melhor gerenciamento de experimentos, você pode converter seu código para usar o Python do Azure Machine Learning e as ferramentas de prompt no fluxo. Você extrai o modelo de prompt do código em um nó de prompt e coloca o código restante em um ou vários nós ou ferramentas do Python. Essa opção ajuda você a ajustar facilmente os prompts executando variantes e permite que você escolha os prompts ideais com base nos resultados da avaliação.
O exemplo a seguir mostra um fluxo que usa nós de prompt e nós do Python:
Para um processo de conversão mais simples, você pode chamar a biblioteca de LLM do LangChain diretamente de dentro de nós do Python. Todo o código é executado em nós do Python, incluindo definições de prompt. Essa opção dá suporte a testes em lotes mais rápidos com base em conjuntos de dados maiores ou em outras configurações.
O exemplo a seguir mostra um fluxo que usa somente nós do Python:
Configurar conexão
Depois de estruturar o fluxo e mover o código para nós de ferramentas específicos, você precisará substituir as variáveis de ambiente originais pelas chaves correspondentes da conexão. Para usar a conexão personalizada que você criou, siga essas etapas:
No código do Python, importe a biblioteca de conexões personalizada inserindo
from promptflow.connections import CustomConnection
.Observação
Para importar uma conexão do OpenAI do Azure, use
from promptflow.connections import AzureOpenAIConnection
.Defina um parâmetro de entrada do tipo
CustomConnection
na função de ferramenta.Substitua variáveis de ambiente que originalmente definiram as chaves ou credenciais pelas chaves correspondentes da conexão.
Analise a entrada para a seção de entrada da interface do usuário do nó e selecione sua conexão personalizada na lista suspensa Valor na interface do usuário.
Certifique-se de também configurar os parâmetros de conexão em quaisquer outros nós que os exijam, como nós de LLM.
Configurar entradas e saídas
Antes de executar o fluxo, configure as entradas e saídas do nó e as entradas e saídas de fluxo geral. Essa etapa é crucial para garantir que todos os dados necessários passem corretamente pelo fluxo e produzam resultados desejados. Para obter mais informações, consulte Entradas e saídas de fluxo.