안녕하세요, 오늘은 Perplexity AI의 API를 사용하여 간단한 대화형 질문-답변 시스템을 Python으로 구현하는 방법을 소개해드리려고 합니다. 이 시스템은 사용자의 질문에 대해 AI가 생성한 답변을 제공하고, 그 결과를 파일로 저장하는 기능을 갖추고 있습니다.
주요 기능
- Perplexity AI API를 통한 질문 답변
- 사용자 친화적인 대화형 인터페이스
- 생성된 답변의 자동 파일 저장
- 연속적인 질문-답변 세션 지원
코드 구현
먼저, 필요한 라이브러리를 임포트하고 API 설정을 합니다:
import os
import re
from openai import OpenAI
# API 키 설정 (실제 사용 시 보안에 주의하세요)
YOUR_API_KEY = "YOUR_API_KEY_HERE"
os.environ["PERPLEXITY_API_KEY"] = YOUR_API_KEY
# OpenAI 클라이언트 초기화
client = OpenAI(
api_key=os.environ.get("PERPLEXITY_API_KEY"),
base_url="https://api.perplexity.ai"
)
다음으로, Perplexity AI로부터 답변을 얻는 함수를 정의합니다:
def get_perplexity_response(prompt):
try:
response = client.chat.completions.create(
model="llama-3.1-sonar-small-128k-online",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.content
except Exception as e:
return f"오류 발생: {str(e)}"
답변을 파일로 저장하는 기능도 구현합니다:
def save_text_to_file(text, filename):
with open(filename, 'w', encoding='utf-8') as file:
file.write(text)
return f'텍스트가 {filename}에 저장되었습니다.'
def create_safe_filename(text):
safe_text = re.sub(r'[^\w\s-]', '', text)
safe_text = re.sub(r'\s+', '_', safe_text.strip())
return safe_text[:50]
마지막으로, 메인 로직을 구현합니다:
def main():
while True:
user_question = input("질문을 입력하세요: ")
answer = get_perplexity_response(user_question)
print("\n답변:")
print(answer)
safe_filename = create_safe_filename(user_question)
file_name = f'{safe_filename}_answer.txt'
save_result = save_text_to_file(answer, file_name)
print(save_result)
if not ask_continue():
print("프로그램을 종료합니다.")
break
if __name__ == "__main__":
main()
사용 방법
- Perplexity AI에서 API 키를 발급받습니다.
- 코드의
YOUR_API_KEY
부분을 발급받은 API 키로 교체합니다. - 스크립트를 실행하고 질문을 입력합니다.
- AI가 생성한 답변을 확인하고, 자동으로 저장된 파일을 확인합니다.
- 계속해서 질문하거나 프로그램을 종료할 수 있습니다.
주의사항
- API 키는 반드시 안전하게 관리해야 합니다. 환경 변수나 별도의 설정 파일을 사용하는 것이 좋습니다.
- 실제 서비스에 적용할 때는 더 강력한 에러 처리와 보안 조치가 필요합니다.
- Perplexity AI의 사용 정책을 반드시 확인하고 준수해야 합니다.
이 간단한 프로젝트를 통해 AI API를 활용한 대화형 시스템의 기본적인 구현 방법을 배울 수 있습니다. 여러분의 필요에 맞게 기능을 확장하고 개선해 보세요!