Ce référentiel contient des démonstrations d'IBM Watsonx, la plateforme d'IA et de données d'IBM conçue pour les entreprises.
L'exemple d'application IA dans ce dépôt exploite les principaux composants suivants :
Comme exemple de scénario, le service client d'une entreprise de télécommunications est utilisé. Les agents humains discutent avec les clients pour résoudre leurs problèmes. Les agents humains sont secondés par des agents numériques pour automatiser au maximum les correctifs nécessaires.
Voici une transcription d'une conversation avec un client qui a un problème de routeur 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.
Dans cet exemple, le logiciel des routeurs peut être mis à jour à distance et automatiquement. Si cela réussit, des e-mails sont envoyés aux clients.
Les transcriptions des appels téléphoniques peuvent être effectuées via les services Speech to Text. L'actif couvre les trois étapes suivantes qui sont exécutées séquentiellement. Pour mettre à jour les routeurs et envoyer des mails, des outils sont invoqués.
Examinons l'étape (2) plus en détail. Si le résumé de la transcription contient « mise à jour du routeur » comme action corrective, l'agent comprend qu'il doit appeler un outil avec le numéro de téléphone du client en entrée.
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'
}
Les agents ont été implémentés avec Bee Agent Framework dans TypeScript. Le framework a été construit par IBM Research et est disponible en open source. L'extrait suivant montre la définition de l'outil de routeur qui est placé dans l'invite lors de l'appel des grands modèles linguistiques.
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 ) ,
} ) ;
}
Plutôt que d'halluciner la sortie de l'outil, l'agent arrête le flux du LLM après « Tool Output : » et exécute l'outil à la place.
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"}
Il existe trois flux différents qui mettent en œuvre le même scénario.
L'application agent peut être exécutée en tant qu'application TypeScript autonome, par exemple localement à des fins de développement. De plus, Watsonx Orchestrate peut être utilisé pour appeler les trois étapes et transmettre le contexte entre les étapes.
Lorsque « Masquer ce formulaire à l'utilisateur » est sélectionné, le flux complet est exécuté, par exemple dans le client de chat Orchestrate ou via l'API.
Pour résumer les transcriptions, le plus grand modèle LLama 3.1 70b peut être utilisé sur watsonx.ai. Pour obtenir des temps de réponse plus rapides et réduire les coûts d’exploitation des modèles, des modèles plus petits peuvent être ajustés.
InstructLab est une initiative open source dirigée par Red Hat et IBM Research. En plus de la possibilité d’affiner les modèles d’IA génératifs, il prend également en charge des générations de données synthétiques, de sorte que moins de données réelles sont nécessaires.
Par exemple, InstructLab peut générer davantage de transcriptions d'échantillons (contextes) basées sur quelques échantillons réels définis dans des fichiers 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
L'extrait suivant montre un exemple de sortie. De même, InstructLab peut générer et évaluer des résumés (réponses).
[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]
Les modèles de fondation personnalisés et les modèles de HuggingFace peuvent être importés et déployés sur watsonx.ai.
Pour évaluer les modèles de base, watsonx.governance fournit des mécanismes permettant de surveiller les modèles avec diverses métriques prêtes à l'emploi ainsi que des métriques personnalisées.
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
Consultez la documentation de l'application pour en savoir plus.
Les démonstrations de ce référentiel ont été mises en œuvre par l'équipe IBM DACH CSM en société avec Tech Sales.