개발자 'Tiqs & Tricks
2024년 1월
서비스 절차에 따른 AI 대화 메모리 관리
지난 달 'Tiqs & Tricks'에서는 앱 내에서 AI 대화를 유지하는 쉽고 실질적으로 자동적인 방법을 살펴보았습니다. 이번 달에는 대화 기억을 유지하는 프로그래밍 방식에 대해 살펴보겠습니다.
대화 분석: 법원 기록이나 시나리오와 마찬가지로 AI 대화는 대화 블록으로, 각 대화에는 최소한 두 가지 중요한 정보가 포함됩니다. 1) 누가 무엇을 말했는지, 2) 무엇을 말했는지
Vantiq에서는 해당 대화 블록을 ChatMessage라고 하며 구조는 다음과 같습니다.
{
유형 : ,
콘텐츠 : ,
ars_속성:
}
더 많은 속성이 있지만 AI 기능에 대한 다른 블로그 게시물을 위해 따로 남겨두겠습니다. (곧 출시될 예정입니다!) ChatMessage 스키마 유형의 구조는 io.vantiq.ai.ChatMessage 서비스를 통해 제공됩니다. 이는 우연히도 다음을 포함하여 ChatMessage 생성을 위한 일련의 "빌더" 절차도 제공합니다.
• ChatMessage.buildSystemMessage(콘텐츠 문자열 필수) : ChatMessage
• ChatMessage.buildHumanMessage(콘텐츠 문자열 필수) : ChatMessage
• ChatMessage.buildAIMessage(콘텐츠 문자열 필수) : ChatMessage
...위 목록의 각 ChatMessage 유형에 대해 등등.
대화의 생리학: 이러한 메시지 블록을 쌓아 두는 것은 모두 훌륭하고 좋은 일이지만 실제 대화에서 어떻게 순서를 지정하고 연결합니까? 또 다른 Vantiq 서비스는 다음과 같은 성과를 거두었습니다. io.vantiq.ai.ConversationMemory! 단서를 찾기 위해 이 서비스에 내장된 절차 목록을 검색하십시오.
• ConversationMemory.startConversation(initialState io.vantiq.ai.ChatMessage 배열, ConversationId 문자열): 문자열
• ConversationMemory.addChatMessages(conversationId 문자열 필수, newMessages io.vantiq.ai.ChatMessage 배열 필수): io.vantiq.ai.ChatMessage 배열
• ConversationMemory.endConversation(conversationId 문자열 필수)
• ConversationMemory.getConversation(conversationId 문자열 필수): io.vantiq.ai.ChatMessage 배열
사용 사례 예 : 그리스몽키 상담신청
기능: 사용자는 이 모바일 앱을 열고 차량 제조사와 모델을 선택한 다음 "Grease Monkey"(에헴, AI)에게 조언을 구합니다.

초기 쿼리를 제출하면 앱은 "convoID"가 없기 때문에 "NewConvo" 채널을 필터링하여 새로운 대화의 시작을 인식합니다.

우리는 앱 내의 VAIL 블록에서 프로그래밍 방식으로 대화를 관리하고 있습니다. CreateConvo의 코드는 다음과 같습니다.
var convoId = Math.random(0, 100000)
var sysStart = ChatMessage.buildSystemMessage(“당신은 매우 유머러스하고 도움이 되는 자동차 정비사입니다.”)
var humStart = ChatMessage.buildHumanMessage(이벤트.메시지)
var cArray = [ sysStart, humStart ]
var convoId = ConversationMemory.startConversation(cArray, toString(convoId))
event.convoID = convoId
event.messages = cArray
보시다시피, 대화 ID에 대해 대규모 풀에서 난수를 검색하여 동시에 애플리케이션에 액세스하는 다른 사람이 동일한 대화에 참여하지 않도록 노력하고 있습니다. 또한 ConvoID에 대해 예상되는 매개변수는 문자열이어야 하므로 convoID 변수를 프로시저 인수의 하나로 일관되게 변환하고 있음을 알 수 있습니다.
궁금하다면 이벤트의 일부로 문자열 내용을 배열에 유지하는 것이 필요하지 않습니다. 이는 클라이언트에 표시할 수 있는 문자열을 확보하는 게으른 방법일 뿐입니다.
AskTheMonkey 작업은 실제 AI 참여이며, 그 응답은 AddToConvo에서 진행 중인 대화에 추가됩니다.
var AIMsg = ChatMessage.buildAIMessage(event.llm응답)
var cArray = ConversationMemory.addChatMessages(toString(event.convoID), [AIMsg])
var lArray = ConversationMemory.getConversation(toString(event.convoID))
event.messages = lArray
...클라이언트에게 다시 전송되기 전에:

사용자에게 후속 질문이 있는 경우 애플리케이션은 이를 진행 중인 대화에 추가하고, AI에 쿼리하고, AI 응답을 대화에 추가하고, 계속해서 돌아다닙니다.
전체적으로 우리는 ChatMessage 서비스의 "빌더" 절차를 사용하여 "대화 상자"의 마지막 부분을 ChatMessage로 변환합니다. 그런 다음 ConversationMemory 서비스를 사용하여 해당 대화를 대화 순서에 배치합니다.
언제든지 ConversationMemory.getConversation을 호출하면 AI가 스레드의 컨텍스트를 유지하거나 인간이 이전에 말한 내용을 기억하기 위해 사용할 수 있도록 전체 교환을 검색합니다.
이 사용 사례에서 AI가 대화 전체를 "기억"하는지 여부를 테스트하는 가장 좋은 방법은 "내가 가지고 있는 자동차는 어떤 종류인가요?"와 같은 질문을 하는 것입니다. 응답이 처음에 제공된 제조업체와 모델을 올바르게 식별하는지 확인합니다.
슬립폼 공법 선택시 고려사항 두 가지 Vantiq 서비스인 io.vantiq.ai.ChatMessage 및 io.vantiq.ai.ConversationMemory를 현명하게 사용하면 AI 상황별 대화를 쉽게 관리하고 유지할 수 있습니다!
첨부 파일 :
당신은해야합니다
로그인 첨부파일을 보시려면
개발자 'Tiqs & Tricks
2024년 1월
서비스 절차에 따른 AI 대화 메모리 관리
지난 달 'Tiqs & Tricks'에서는 앱 내에서 AI 대화를 유지하는 쉽고 실질적으로 자동적인 방법을 살펴보았습니다. 이번 달에는 대화 기억을 유지하는 프로그래밍 방식에 대해 살펴보겠습니다.
대화 분석: 법원 기록이나 시나리오와 마찬가지로 AI 대화는 대화 블록으로, 각 대화에는 최소한 두 가지 중요한 정보가 포함됩니다. 1) 누가 무엇을 말했는지, 2) 무엇을 말했는지
Vantiq에서는 해당 대화 블록을 ChatMessage라고 하며 구조는 다음과 같습니다.
{
유형 : ,
콘텐츠 : ,
ars_속성:
}
더 많은 속성이 있지만 AI 기능에 대한 다른 블로그 게시물을 위해 따로 남겨두겠습니다. (곧 출시될 예정입니다!) ChatMessage 스키마 유형의 구조는 io.vantiq.ai.ChatMessage 서비스를 통해 제공됩니다. 이는 우연히도 다음을 포함하여 ChatMessage 생성을 위한 일련의 "빌더" 절차도 제공합니다.
• ChatMessage.buildSystemMessage(콘텐츠 문자열 필수) : ChatMessage
• ChatMessage.buildHumanMessage(콘텐츠 문자열 필수) : ChatMessage
• ChatMessage.buildAIMessage(콘텐츠 문자열 필수) : ChatMessage
...위 목록의 각 ChatMessage 유형에 대해 등등.
대화의 생리학: 이러한 메시지 블록을 쌓아 두는 것은 모두 훌륭하고 좋은 일이지만 실제 대화에서 어떻게 순서를 지정하고 연결합니까? 또 다른 Vantiq 서비스는 다음과 같은 성과를 거두었습니다. io.vantiq.ai.ConversationMemory! 단서를 찾기 위해 이 서비스에 내장된 절차 목록을 검색하십시오.
• ConversationMemory.startConversation(initialState io.vantiq.ai.ChatMessage 배열, ConversationId 문자열): 문자열
• ConversationMemory.addChatMessages(conversationId 문자열 필수, newMessages io.vantiq.ai.ChatMessage 배열 필수): io.vantiq.ai.ChatMessage 배열
• ConversationMemory.endConversation(conversationId 문자열 필수)
• ConversationMemory.getConversation(conversationId 문자열 필수): io.vantiq.ai.ChatMessage 배열
사용 사례 예 : 그리스몽키 상담신청
기능: 사용자는 이 모바일 앱을 열고 차량 제조사와 모델을 선택한 다음 "Grease Monkey"(에헴, AI)에게 조언을 구합니다.
초기 쿼리를 제출하면 앱은 "convoID"가 없기 때문에 "NewConvo" 채널을 필터링하여 새로운 대화의 시작을 인식합니다.
우리는 앱 내의 VAIL 블록에서 프로그래밍 방식으로 대화를 관리하고 있습니다. CreateConvo의 코드는 다음과 같습니다.
var convoId = Math.random(0, 100000)
var sysStart = ChatMessage.buildSystemMessage(“당신은 매우 유머러스하고 도움이 되는 자동차 정비사입니다.”)
var humStart = ChatMessage.buildHumanMessage(이벤트.메시지)
var cArray = [ sysStart, humStart ]
var convoId = ConversationMemory.startConversation(cArray, toString(convoId))
event.convoID = convoId
event.messages = cArray
보시다시피, 대화 ID에 대해 대규모 풀에서 난수를 검색하여 동시에 애플리케이션에 액세스하는 다른 사람이 동일한 대화에 참여하지 않도록 노력하고 있습니다. 또한 ConvoID에 대해 예상되는 매개변수는 문자열이어야 하므로 convoID 변수를 프로시저 인수의 하나로 일관되게 변환하고 있음을 알 수 있습니다.
궁금하다면 이벤트의 일부로 문자열 내용을 배열에 유지하는 것이 필요하지 않습니다. 이는 클라이언트에 표시할 수 있는 문자열을 확보하는 게으른 방법일 뿐입니다.
AskTheMonkey 작업은 실제 AI 참여이며, 그 응답은 AddToConvo에서 진행 중인 대화에 추가됩니다.
var AIMsg = ChatMessage.buildAIMessage(event.llm응답)
var cArray = ConversationMemory.addChatMessages(toString(event.convoID), [AIMsg])
var lArray = ConversationMemory.getConversation(toString(event.convoID))
event.messages = lArray
...클라이언트에게 다시 전송되기 전에:
사용자에게 후속 질문이 있는 경우 애플리케이션은 이를 진행 중인 대화에 추가하고, AI에 쿼리하고, AI 응답을 대화에 추가하고, 계속해서 돌아다닙니다.
전체적으로 우리는 ChatMessage 서비스의 "빌더" 절차를 사용하여 "대화 상자"의 마지막 부분을 ChatMessage로 변환합니다. 그런 다음 ConversationMemory 서비스를 사용하여 해당 대화를 대화 순서에 배치합니다.
언제든지 ConversationMemory.getConversation을 호출하면 AI가 스레드의 컨텍스트를 유지하거나 인간이 이전에 말한 내용을 기억하기 위해 사용할 수 있도록 전체 교환을 검색합니다.
이 사용 사례에서 AI가 대화 전체를 "기억"하는지 여부를 테스트하는 가장 좋은 방법은 "내가 가지고 있는 자동차는 어떤 종류인가요?"와 같은 질문을 하는 것입니다. 응답이 처음에 제공된 제조업체와 모델을 올바르게 식별하는지 확인합니다.
슬립폼 공법 선택시 고려사항 두 가지 Vantiq 서비스인 io.vantiq.ai.ChatMessage 및 io.vantiq.ai.ConversationMemory를 현명하게 사용하면 AI 상황별 대화를 쉽게 관리하고 유지할 수 있습니다!
첨부 파일 :
당신은해야합니다 로그인 첨부파일을 보시려면