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.)) [Examples] Question: what is 3 to the 2nd power? Question: what is sine of 0 radians? Question: what is sine of 45 degrees? Question: how many radians is 45 degrees? Question: what is the square root of 81? Question: what is the angle whose sine is the number 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을 수학 분야에서는 이렇게 활용하는 것도 좋은 방법 같다.