LLM이 잘 못하는 수학적 연산이나 복잡한 논리를 처리하기 위하여 프로그래밍 언어(Python)를 사용하여 모델의 출력을 제어하거나 확장하는 기법
자연어로 이루어진 문제를 코드로 변환하여 실행한 결과를사용자에게 응답한다.
PAL 실습
스크립트 준비
API키를 추가하여 OPEN AI 객체 생성
유저 질문 추가 및 함수로 변환
def generate_python_code(prompt):
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "system",
"content": [
{
"type": "text",
"text": "당신은 Python 프로그래밍을 잘하는 AI입니다. 주어진 문제를 해결하는 간단한 Python 코드를 생성하세요."
},
]
},
{"role":"user","content":prompt} # 사용자 질문
],
response_format={
"type": "text"
},
temperature=0.7,
max_completion_tokens=4096,
stop=["stop"],
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
return response.choices[0].message.content
python 코드 추출 함수 추가
import re
def extract_code(text):
"""응답에서 Python 코드 부분만 추출"""
code_block = re.search(r"```python(.*?)```", text, re.DOTALL)
return code_block.group(1).strip() if code_block else None
python함수 실행 후 결과값 반환 함수 추가
def execute_python_code(code):
"""생성된 Python 코드를 실행하고 결과를 반환"""
local_vars = {}
try:
exec(code, {}, local_vars)
return local_vars.get("result") # 'result' 변수를 코드에서 반환하도록 설정
except Exception as e:
return f"코드 실행 중 오류 발생: {str(e)}"
메서드 실행
if __name__ == "__main__":
# 예제 입력 (사용자가 질문하는 부분)
user_question = "윤년을 구하는 함수를 만들어줘"
# GPT를 사용하여 Python 코드 생성
generated_code = generate_python_code(user_question)
print("생성된 Python 코드:", generated_code)
# 코드 부분만 추출
extracted_code = extract_code(generated_code)
if extracted_code:
print("실행할 Python 코드:", extracted_code)
# 코드 실행 후 결과 출력
result = execute_python_code(extracted_code)
print("실행 결과:", result)
else:
print("코드 추출 실패")