AISmarteasy – 시맨틱 커널 포크로 개발하기 – Semantic Function – 3a6 – Semantic Kernel 샘플 프롬프트 – NCalc skills

llm은 언어 모델이기 때문에 수학에는 약할 수 밖에 없다. openai의 gpt-4를 보면 이런 말 하기가 좀 미안할 정도로 수학도 잘 한다.

 

llm에게 수학 계산을 시킬 때 사용할 수 있는 프롬프트.

I want you to act like a mathematician. I will type mathematical expressions and you will respond with the result of calculating the expression. I want you to answer only with the final amount and nothing else. Do not write explanations. When I need to tell you something in English, I’ll do it by putting the text inside square brackets {like this}. My first expression is: 4+5

수학자로 역할을 부여하고, 수학 식을 작성해서 주면 계산을 해 주는데 설명은 빼고 답만 하라고 지시한다. 수학 식이 아닌 뭔가를 이야기할 때는 { } 안에 작성하겠다고 알려준다.

 

llm에게 step-by-step으로 하라고 하면, 복잡한 수학 문제도 그렇지 않을 경우보다 더 잘한다.

You are a math tutor who helps students of all levels understand and solve mathematical problems. Provide step-by-step explanations and guidance for a range of topics, from basic arithmetic to advanced calculus. Use clear language and visual aids to make complex concepts easier to grasp.

이번엔 수학 tutor라는 역할을 주고, step-by-step으로 하라고 하자.

 

llm은 언어 모델이라는 한계가 있기 때문에, 수학 식을 푸는 전문 라이브러리가 있다면 이를 사용하는 게 좋겠지. 시맨틱 커널에서는 NCalc를 사용하는 예를 제시한다.

사용자는 “25의 제곱근은 얼마인가?”와 같이 질문 할 것이기 때문에, NCalc를 사용하려면 이런 질문을 NCalc가 처리할 수 있는 식으로 바꿔야 한다. 이 부분은 llm에게 시킬 것이니 프롬프트로 작성되어야 한다.

 

NCalcSkill

Translate a math problem into a expression that can be executed using .net NCalc library. Use the output of running this code to answer the question.
Available functions: Abs, Acos, Asin, Atan, Ceiling, Cos, Exp, Floor, IEEERemainder, Log, Log10, Max, Min, Pow, Round, Sign, Sin, Sqrt, Tan, and Truncate. in and if are also supported.

Question: $((Question with math problem.))
expression: $((single line mathematical expression that solves the problem))

[Examples]
Question: What is 37593 * 67?
expression:37593 * 67

Question: what is 3 to the 2nd power?
expression:Pow(3, 2)

Question: what is sine of 0 radians?
expression:Sin(0)

Question: what is sine of 45 degrees?
expression:Sin(45 * Pi /180 )

Question: how many radians is 45 degrees?
expression: 45 * Pi / 180

Question: what is the square root of 81?
expression:Sqrt(81)

Question: what is the angle whose sine is the number 1?
expression:Asin(1)

[End of Examples]

Question: {{ $input }}

 

 

설계 결정

1. 시맨틱 함수와 네이티브 함수를 둔다. 플러그인 이름은 둘 다 MathSkill로 한다.

시맨틱 함수의 함수는 TranslateToNCalc로 하고, 네이티브 함수는 Evaluate로 한다.

 

[실제 해 보기]

1. What is the square root of 625.

이 정도 답은 gpt-4도 잘 답한다.

2. 250, 3240, 288의 최소공배수를 구해.

이것에 대해서 위에 소개한 두 개의 프롬프트를 사용해 봤는데, 답이 틀리게 나온다. NCalc도 최소공배수 구하는 함수 지원이 없어 이에 대한 지원 처리를 한 후 해보니 답이 잘 나온다.

 

* 정확한 계산 방법이 있는 거라면, llm이 정확한 답을 항상 주는 게 아니라면, 검산도 해야 한다.
점점 나아지기는 하겠지만, 100% 맞출 때 까지 llm에게 수학 문제를 풀라고 지시하지 말자. 맞는 지 검산도 해야 하는 데 그럴 거면 시키지 말고 처음부터 직접 하는 게 맞겠지.
물론 자신의 실력으로 풀 수 없는 것에 대해서는 풀이 과정을 설명해 달라고 하고, 그걸 통해 배우는 거는 필요하지. llm을 수학 분야에서는 이렇게 활용하는 것도 좋은 방법 같다.

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

Leave a Reply

*