From f8865fcfedf8642f27543c1927425125ed9b5210 Mon Sep 17 00:00:00 2001 From: hm-desk Date: Wed, 2 Oct 2024 08:32:47 +0900 Subject: [PATCH] =?UTF-8?q?openai=20api=EB=A5=BC=20=EC=9D=B4=EC=9A=A9?= =?UTF-8?q?=ED=95=9C=20=EC=B0=B8=EA=B3=A0=EC=9E=90=EB=A3=8C=20=EB=B3=80?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ open_ai.py | 50 +++++++++++++++++++++++++++++++++++++++++++ requirements.txt | Bin 0 -> 374 bytes translate_article.py | 2 +- 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 open_ai.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index 307d311..048a4d6 100644 --- a/.gitignore +++ b/.gitignore @@ -162,3 +162,5 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +# custom +test.py \ No newline at end of file diff --git a/open_ai.py b/open_ai.py new file mode 100644 index 0000000..44f00d7 --- /dev/null +++ b/open_ai.py @@ -0,0 +1,50 @@ +import os +from openai import OpenAI +from dotenv import load_dotenv +import translate_article as ta + +# .env 파일에서 API 키 로드 +load_dotenv() +client = OpenAI( + api_key=os.getenv("OPENAI_API_KEY"), +) + +def generate_blog_post(article_text, style_reference): + + # ChatCompletion API를 사용하여 텍스트 변환 + prompt = ( + """ + 너는 대한민국에 거주하는 블로그 전문가이다. + 네가 작성한 블로그 글은 지난 3년간 높은 주목성, 관여도, 전환율을 만들었다. + 이 전문성을 이용해서 제공받는 기사를 블로그 형태로 변형하여 작성해야만 한다. + """ + f"\n블로그 스타일은 아래 문서를 모방해줘. 적절한 사례들이 들어가도 좋겠어.\n---\n{style_reference}\n" + f"제공된 기사 내용:\n{article_text}" + ) + + response = client.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "system", "content": "너는 대한민국에 거주하는 블로그 전문가이다."}, + {"role": "user", "content": prompt} + ], + max_tokens=2000, + temperature=0.7, # 창의성을 위한 적절한 값 조정 + ) + + # 응답에서 텍스트 추출 + blog_post = response.choices[0].message.content + return blog_post + +# 예시 기사 텍스트 (text 파싱 결과로 제공된 텍스트를 사용할 수 있습니다) +article_text = ta.getContents() + +# 블로그 스타일 참고 텍스트 +style_reference = os.getenv("reference_style") + +# 블로그 포스트 생성 +blog_post = generate_blog_post(article_text, style_reference) + +# 결과 출력 +print(">>>>\n" * 3) +print(blog_post) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..184e73f30194048f0fce1913d093b29bd9020458 GIT binary patch literal 374 zcmYk2>kfi23`W1-CO!&;i81=ahw(B435r}a(T7)0D~KUu%X)g+?)};;YNwlel{&Fk z>Qu8|wbYhxsZ>D={<-Fw=>Xpjbm_!G8FAy*PGtjE;BB!*=tLK+tC_{JH0( z7|dSk2)T2wMFMWSKkI?1Avd9e8s>uGfZ41G-99)M9x>~N+{~9{|3?!l)UXl5-Rp#b q4PL1w(lCFdUe7YyclzlK#uw`7H)4rDYUPd_JykyEp7}<@l>Y%R?>bZf literal 0 HcmV?d00001 diff --git a/translate_article.py b/translate_article.py index 0d41d91..dd26388 100644 --- a/translate_article.py +++ b/translate_article.py @@ -16,7 +16,7 @@ def getContents(): # HTML 태그를 제거 후 페이지의 모든 텍스트 가져오기 (전체 내용) page_content = soup.get_text() - + # 빈 줄을 제거하고 텍스트만 출력 (줄바꿈 문자를 기준으로 필터링) lines = [line.strip() for line in page_content.splitlines() if line.strip()]