본문 바로가기
코드리뷰/chatGPT(Python)코드

chatgpt! 자동 포스팅 시 이것만은 꼭 나와야해.

by 디마드 2024. 4. 9.

chatgpt 프롬프트에 제약 조건 및 상세 요건을 잘 기술해도 원하는 대로 되지 않는 경우가 왕왕 발생한다. 잘 만들어진 포스트 샘플을 제공한다고 해도 100% 보장은 되지 않는다.

예를 들어 글의 제목과 본문을 반드시 구분하려면, funcation calling을 사용하면 된다. 

1. 이런식으로 제목과 본문을 속성으로 정의한다. 


tools = [
    {
        "type": "function",
        "function": {
            "name": "make_posting",            
            "parameters": {
                "type": "object",
                "properties": {
                    "제목": {
                        "type": "string",                        
                    },
                    "본문": {
                        "type": "string",                        
                    },
                },
                "required": ["제목","본문"],
            },
        },
    }
]

2. chat.completions 작성 시 tools을 지정한다. 

response = client.chat.completions.create(    
  model="gpt-3.5-turbo-0125",  
  tools=tools,
  messages=[
    {"role": "system", "content": "당신은  10년간 IT기기 전문 블로그를 운영한 IT 기기 전문가이자 검색엔진 최적화 전문가입니다. 항상 검색엔진 최적화(SEO)를 염두에 두고 글을 작성하며 간결한 문체를 사용하여 누구나 읽기 좋게 전문용어를 쉽게 설명합니다. 정확한 정보를 독자들에게 전달하기 위해 사실에 입각한 내용만을 작성합니다. "},
    {"role": "user", "content": prompt}    
  ]
)

3. assistant를 돌려서 결과를 확인한다. 

assistant_content = response.choices[0].message.tool_calls[0].function.arguments
# print(assistant_content)
result = json.loads(assistant_content)

for i in result.items():
  print(f"{i[0]}")
  print(f"{i[1]}")
  print()

제목
LG전자 LG그램 15ZD90S-GX76K vs 삼성전자 갤럭시북4 프로 NT940XGQ-A71A: 성능과 휴대성 비교

본문
# LG전자 LG그램 15ZD90S-GX76K vs 삼성전자 갤럭시북4 프로 NT940XGQ-A71A: 성능과 휴대성 비교

## 주요 스펙 비교

 

 

반응형

댓글