Este repositório contém demonstrações do IBM watsonx, a plataforma de dados e IA da IBM desenvolvida para negócios.
O exemplo de aplicativo de IA neste repositório aproveita os seguintes componentes principais:
Como exemplo é utilizado o cenário de atendimento ao cliente de uma empresa de telecomunicações. Agentes humanos conversam com os clientes para resolver seus problemas. Os agentes humanos são apoiados por agentes digitais para automatizar ao máximo as correções necessárias.
Aqui está a transcrição de uma conversa com um cliente que tem um problema com o roteador Wi-Fi:
John (Teltop Customer Care Agent): Hello, this is John from Teltop customer care. How
can I assist you today?
Mary (Disappointed Subscriber): Hi John, it's Mary again. I've been having a nightmare
with your service. My home Wi-Fi is acting up, and the TV service over fiber is
terrible.
John: I'm sorry to hear about the troubles you're facing at home, Mary. Let's address
these issues. Can you please provide me with your account number or the phone number
associated with your account?
Mary: Sure, it's 123-555-1234.
[...]
John: Mary, it appears there are some issues with your router. We need to update the
router software.
Neste exemplo, o software dos roteadores pode ser atualizado remota e automaticamente. Se isso puder ser feito com sucesso, os e-mails serão enviados aos clientes.
As transcrições de chamadas telefônicas podem ser feitas por meio dos serviços Speech to Text. O ativo cobre as três etapas a seguir, que são executadas sequencialmente. Para atualizar roteadores e enviar e-mails, ferramentas são invocadas.
Vejamos a etapa (2) com mais detalhes. Se o resumo da transcrição contiver 'atualização do roteador' como ação corretiva, o agente entende que deve invocar uma ferramenta com o número de telefone do cliente como entrada.
Agent UpdateRouterIfNecessary LLM Output:
{
generated_text: 'Question: Update the router for Mary (123-555-1234) based on the
transcript summary.n' +
'Thought: I need to update the router for Mary (123-555-1234) based on the
transcript summary, so I will use the RouterUpdate tool.n' +
'Tool Name: RouterUpdaten' +
'Tool Caption: Updating router software for Mary (123-555-1234)n' +
'Tool Input: {"phoneNumber":"123-555-1234"}n' +
'Tool Output: ',
generated_token_count: 4465,
input_token_count: 1271,
stop_reason: 'not_finished'
}
Os agentes foram implementados com o Bee Agent Framework em TypeScript. A estrutura foi construída pela IBM Research e está disponível como código-fonte aberto. O trecho a seguir mostra a definição da ferramenta roteadora que é colocada no prompt ao invocar os modelos de linguagem grande.
export class RouterUpdateTool extends Tool <
RouterUpdateToolOutput , RouterUpdateToolOptions , RouterUpdateToolRunOptions > {
name = "RouterUpdate" ;
description = "Updates the software of routers remotely for a subscriber " +
"with a certain phone number." ;
inputSchema ( ) {
return z . object ( {
phoneNumber : z
. string ( { description : `Phone number of a subscriber, for example '123-456-7890'` } )
. min ( 1 )
. max ( 40 ) ,
} ) ;
}
Em vez de alucinar a saída da ferramenta, o agente interrompe o fluxo do LLM após 'Saída da Ferramenta:' e executa a ferramenta.
Agent UpdateRouterIfNecessary (tool_input) ? : {"phoneNumber":"123-555-1234"}
Input to Router Update tool - phoneNumber: 123-555-1234
Agent UpdateRouterIfNecessary (tool_output) ? : {"success":"true",
"text":"Router has been updated"}
Existem três fluxos diferentes que implementam o mesmo cenário.
O aplicativo agente pode ser executado como um aplicativo TypeScript independente, por exemplo, localmente para fins de desenvolvimento. Além disso, o watsonx Orchestrate pode ser utilizado para invocar as três etapas e para passar o contexto entre as etapas.
Quando 'Ocultar este formulário do usuário' é selecionado, o fluxo completo é executado, por exemplo, no cliente de chat Orchestrate ou via API.
Para resumir as transcrições, o modelo maior LLama 3.1 70b pode ser usado em execução em watsonx.ai. Para obter tempos de resposta mais rápidos e economizar custos de execução dos modelos, modelos menores podem ser ajustados.
InstructLab é uma iniciativa de código aberto liderada pela Red Hat e IBM Research. Além da capacidade de ajustar modelos generativos de IA, ele também oferece suporte a gerações de dados sintéticos, de modo que são necessários menos dados reais.
Por exemplo, o InstructLab pode gerar mais transcrições de amostras (contextos) com base em algumas amostras reais definidas em arquivos yaml.
version : 3
task_description : >-
Summarization of phone call transcripts between human agents
and clients of a telecommunication service provider about
technical issues.
created_by : nheidloff
seed_examples :
- context : >-
John (Teltop Customer Care Agent): Hello, this is John from Teltop customer
care. How can I assist you today?nnMary (Disappointed Subscriber): Hi
John, it'''s Mary. I'''ve been having a nightmare with your service.
My home Wi-Fi is acting up, and the TV service over fiber is terrible.
nnJohn: I'm sorry to hear about the troubles you're facing at home, Mary.
Let's address these issues. Can you please provide me with your account number
or the phone number associated with your account??nnMary: Sure, it'''s
123-555-1234. [...]
nnJohn: Mary, it appears there are some issues with your router. We need
to update the router software. [...]
question: >-
Summarize the transcript of the call. Identify the agent and the
subscriber. Add any specific issues mentioned by the subscriber. Add any
corrective actions taken as directed by the agent. Please mention if the
issue is resolved. Mention any follow-up actions and timelines. List the
phone number of the subscriber at the end.
answer: >-
**Agent:** Miken**Subscriber:** Saran [...]
**Corrective Actions:** Router software update [...]
**Subscriber's Phone Number:** 123-555-1234
O trecho a seguir mostra alguns exemplos de saída. Da mesma forma, o InstructLab pode gerar e avaliar resumos (respostas).
[Start of Context]
Raj (Customer Care Agent): Hello, this is Raj from customer care. How can I assist
you today?
Samantha (Customer): Hi Raj, I'm having trouble with my internet connection. It's
been really slow lately [cut ... cut]
[End of Context]
Modelos de base personalizados e modelos do HuggingFace podem ser importados e implantados em watsonx.ai.
Para avaliar modelos básicos, watsonx.governance fornece mecanismos para monitorar modelos com várias métricas prontas para uso, bem como métricas personalizadas.
git clone https://github.com/IBM/watsonx-ai-platform-demos
cd watsonx-demos/applications/application
cp .env.template .env
# define WATSONX_API_KEY and WATSONX_PROJECT_ID
yarn install
yarn start:appOneLLMTwoAgents
Consulte a documentação do aplicativo para obter mais informações.
As demonstrações deste repositório foram implementadas pela equipe IBM DACH CSM em parceria com Tech Sales.