OpenAI를 활용한 프롬프트 엔지니어링 실습

Program-Aided Language Models(PAL)

  • LLM이 잘 못하는 수학적 연산이나 복잡한 논리를 처리하기 위하여 프로그래밍 언어(Python)를 사용하여 모델의 출력을 제어하거나 확장하는 기법

  • 자연어로 이루어진 문제를 코드로 변환하여 실행한 결과 사용자에게 응답한다.

PAL 실습

  1. 스크립트 준비

  1. API키를 추가하여 OPEN AI 객체 생성

  1. 유저 질문 추가 및 함수로 변환

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
  1. 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
  1. 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)}"
  1. 메서드 실행

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("코드 추출 실패")

  1. 응답결과

Last updated