AISmarteasy – 시맨틱 커널 개발하기 3a – Semantic Function – GetIntent

ai 애플리케이션이 사용자와 챗을 하다 보면, 사용자의 의도를 알면 좋은 때가 있다. 아니 좋다 기 보다는 꼭 필요하다.

ll이 이를 할 수 있도록 지시하는 시맨틱 함수를 만들어보자. 의도를 알아내라고 지시하는 함수는 GetIntent라고 하자. 의도를 알면 그 의도에 따라 뭔가 해야 하므로, 의도를 아는 것은 ai 애플리케이션 구성 요소들을 협력 시키도록 하는 거니 플러그인은 OrchestratorSkill이라고 하자.

Plugins – Semantic 하위에 OrchestratorSkill와 GetIntent 폴더를 만들고, GetIntent 폴더에 skprompt.txt와 config.json 파일을 만든다.

skprompt.txt는 다음과 같이 작성한다.

{{ConversationSummarySkill.SummarizeConversation $history}}

User: {{$input}}

———————————————

Provide the intent of the user. The intent should be one of the following: {{$options}}

INTENT:

 

첫 문장을 보면, 함수 호출이 있다. ConversationSummarySkill 플러그인의 SummarizeConversation 함수를 호출한다. 이 시맨틱 함수가 이미 있다는 거다.  호출할 때 history인자 값이 전달된다. 챗 이력이 history 변수로 관리되고, 이 챗 이력을 요약한다는 거다.

사용자와 ai 애플리케이션이 대화한 이력 다음에 사용자의 말이 나온다. 이것은 input 변수 값으로 전달된다.

llm이 파악한 의도를 알려준다고 해도 개발되는 ai 애플리케이션에서 대응하는 범위를 벗어날 수 있다. 사용자의 의도가 어떤 것일 때 이렇게 대응 해야 지라는 것이 있다면, 의도를 제공되는 것들 중 하나로 작성해 달라고 할 수 있다. options가 선택할 수 있는 의도들을 제공해 준다.

 

config.json은 다음과 같이 작성한다.

 

이렇게 시맨틱 함수 구성 요소인 설정을 잘 작성하려면, llm에 뭘 지시 할 지를 명세 할 때 뭘 지시하려는 것인지, 지시할 때 뭘 사용할지, 그것들은 왜 사용 하는 지를 잘 작성해야 한다. llm 서비스 사용과 관련된 항목은 max_tokens과 temperature 정도만 잘 작성하면 된다. 이에 대해서는 지시의 종류와 원하는 결과 수준에 따라 선택해서 사용할 수 있는 몇 가지 안을 만들어 두면 된다. 이 또한 명세에 작성해야겠다.

 

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*