이 저장소에는 비즈니스용으로 구축된 IBM의 AI 및 데이터 플랫폼인 IBM watsonx의 데모가 포함되어 있습니다.
이 저장소의 예제 AI 애플리케이션은 다음과 같은 주요 구성 요소를 활용합니다.
예시 시나리오로는 통신 회사의 고객 관리가 사용됩니다. 상담원은 고객 과 대화하여 문제를 해결합니다. 인간 에이전트는 필요한 수정 사항을 최대한 자동화하기 위해 디지털 에이전트 의 지원을 받습니다.
다음은 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.
이 예에서는 라우터 소프트웨어를 원격 및 자동으로 업데이트할 수 있습니다. 이 작업이 성공적으로 완료되면 고객에게 메일이 전송됩니다.
전화 통화 내용은 Speech to Text 서비스를 통해 수행할 수 있습니다. 자산은 순차적으로 실행되는 다음 세 단계를 포함합니다. 라우터를 업데이트하고 메일을 보내려면 도구가 호출됩니다.
(2)단계를 더 자세히 살펴보겠습니다. 기록 요약에 수정 조치로 '라우터 업데이트'가 포함된 경우 상담원은 고객의 전화번호를 입력으로 사용하여 도구를 호출해야 한다는 것을 이해합니다.
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'
}
에이전트는 TypeScript의 Bee Agent Framework로 구현되었습니다. 프레임워크는 IBM Research에서 구축되었으며 오픈 소스로 제공됩니다. 다음 조각은 대규모 언어 모델을 호출할 때 프롬프트에 추가되는 라우터 도구의 정의를 보여줍니다.
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 ) ,
} ) ;
}
도구 출력을 환각하는 대신 에이전트는 '도구 출력:' 이후 LLM의 스트림을 중지하고 대신 도구를 실행합니다.
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"}
동일한 시나리오를 구현하는 세 가지 다른 흐름이 있습니다.
에이전트 애플리케이션은 예를 들어 개발 목적으로 로컬로 독립형 TypeScript 애플리케이션으로 실행할 수 있습니다. 또한 watsonx Orchestrate를 활용하여 세 단계를 호출하고 단계 간에 컨텍스트를 전달할 수 있습니다.
'사용자에게 이 양식 숨기기'를 선택하면 Orchestrate 채팅 클라이언트 또는 API를 통해 전체 흐름이 실행됩니다.
성적표를 요약하면 watsonx.ai에서 실행되는 더 큰 모델 LLama 3.1 70b를 사용할 수 있습니다. 더 빠른 응답 시간을 달성하고 모델 실행 비용을 절약하기 위해 더 작은 모델을 미세 조정할 수 있습니다.
InstructLab은 Red Hat과 IBM Research가 주도하는 오픈 소스 이니셔티브입니다. 생성적 AI 모델을 미세 조정하는 기능 외에도 실제 데이터가 덜 필요하도록 합성 데이터 생성도 지원합니다.
예를 들어 InstructLab은 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
다음 스니펫은 몇 가지 출력 예를 보여줍니다. 마찬가지로 InstructLab은 요약(답변)을 생성하고 평가할 수 있습니다.
[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]
HuggingFace의 사용자 정의 기반 모델 및 모델을 watsonx.ai로 가져오고 배포할 수 있습니다.
기초 모델을 평가하기 위해 watsonx.governance는 다양한 기본 메트릭과 사용자 정의 메트릭을 사용하여 모델을 모니터링하는 메커니즘을 제공합니다.
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
자세한 내용은 응용 프로그램 설명서를 참조하세요.
이 저장소의 데모는 Tech Sales와 협력하여 IBM DACH CSM 팀에 의해 구현되었습니다.