AISmarteasy – 시맨틱 커널 포크로 개발하기 4 – 네이티브 함수

llm이 획기적인 발전을 했지만, 태생적인 한계를  갖는다.

훈련 된 데이터를 기반으로 하기 때문에 훈련 시 접근할 수 없던 데이터에 대해서는 알 수 없다.

언어 모델이라 복잡한 추론이나 계산은 힘겨워 한다. 또한 사용자와 오랜 시간 주고 받은 내용들을 장기 기억하는 것도 어렵고, 현재 날짜나 시간을 알 수도 없다.

 

llm 공급자는 ai 서비스를 제공할 때 이런 부분들을 계속 보강하고 있다. 분명히 있었던 한계가 어느 날 사라질 지도 모른다.

그래도 ai 서비스는 서비스이니 보편 적일 수 밖에 없다. 특수성이 요구되는 경우는 그것에 상응하는 비용 지급이 아니라면 들어줄 리 없다. 기능 공급자가 여럿일 때는 자신들의 이해관계에 따른 하나를 선택할 수도 있다.

여러 가지 이유로 llm 연동 ai 애플리케이션 개발에는 추가적인 기능이 요구될 수 있다. 시맨틱 커널에서 기존 방식으로 개발되는 기능을 네이티브 함수라 한다.

 

llm 연동 ai 애플리케이션 사용자가 유일하게 하는 일로 남은 것은 프롬프트 작성이다.

프롬프트 작성 방법도 잘 알려줘야 한다.

작성된 프롬프트를 잘 관리하고 잘 사용할 수 있게 해 줘야 한다.

 

[ 네이티브 함수 개발 시 주의 사항 ]

llm의 한계를 보완하기 위한, llm 벤더가 ai 서비스로 제공하지 않는 llm 보완 기능으로 제한해서 기능을 추가 개발해야 한다. llm 연동이 중요하다. 새로운 ai 기능을 개발하는 것이 아니다. 

 

[ llm 연동 ai 애플리케이션 개발 프레임워크가 제공할 수 있는 기능  ]

  1. RAG를 위한
    1. 기존 데이터베이스 접근(관계형)
    2. 검색 엔진에서 검색
    3. 웹 페이지 접근, 특정 애플리케이션 api 접근
    4. 문서화 된 데이터 접근
    5. 1, 2, 3, 4에서 얻은 데이터 임베딩
      • 검색 엔진이라도 공공 기관이나 기업이나 개인이 공개하지 않은 데이터에 접근할 수는 없다. 이러한 내부 데이터는 주로 관계형 데이터베이스나 다양한 형식의 문서로 작성되어 관리된다. 이들은 자연어 검색 지원이 약하다. 자연어 검색을 지원하기 위한 방법으로 임베딩을 사용한다.
    6. 5를 거쳐 벡터화 된 데이터 관리(벡터  데이터 베이스)와 접근
  2. 멀티 모달을 위한
    1. 음성 레코딩

 

[설계 결정]

1. 네이티브 함수는 기존 개발과 같으니, C# 클래스로 작성한다. 클래스 이름은 접두어로 Skill을 사용한다. 루트 네임스페이스는  AISmarteasy.Skill로 한다.

예) 구글 검색 엔진에서 검색하는 기능을 개발 한다면 – GoogleSkill – 함수는 Search, 이것의 실제 적인 구현은 구글 검색 엔진 API에 접근 호출하는 것이 된다. 제곱근을 구하고 더하기를 하는 기능이라면 MathSkill – Sqrt, Add

 

네이티브 함수를 이렇게만 보면 “기존과 뭐가 다르지?”라는 의문이 들 수 있다.  일반적인 개발이라면, Sqrt(634)와 같이 함수 호출 코드를 작성해야 한다. llm 연동 ai 애플리케이션 이라면, “What is the square root of 634?”에 답할 수 있도록 해야 한다.

 

[명세]

1. 요구 기능 중 llm 연동을 통해 가능한 것을 구분

2. 프롬프트  명세

3 . 프롬프트 템플릿 명세, UI 명세

4. 분류(카테고리) 명세

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

Leave a Reply

*