티스토리 뷰


안녕하세요. 여러분!
여러분들에게 유용한 정보를 전달하기 위해
열심히 뛰어다니는 기자 코딩에그입니다.
오늘은 여러분과 함께 생성형 AI를 활용한 간단한
챗봇을 만들어볼 건데요.
처음부터 차근차근 진행할 예정이니 잘 따라와주세요.
Gemini 란?
간단히 설명하면 Gemini는 구글의 딥마인드에서
개발한 생성형 AI 모델입니다.
저희는 gemini 1.5-flash 모델을 활용하여
무료로 간단하게 활용할 수 있는 챗봇을
만들 예정입니다. 차후 업데이트에 따라 모델이나 요금제가
변경될 수 있지만 상황에 맞게 적용해주세요.
FastAPI란?
FastAPI는 python으로 작성된 웹프레임워크입니다.
구조가 매우 간단하여 API를 빠르고 효율적으로
개발할 수 있는 프레임워크로 주목을 받고 있는데요.
이 FastAPI를 활용하여 챗봇 API를 구성하도록 하겠습니다.
환경 설정
일단 실습을 하기 전 VScode와 python(3.8버전 이상)이
설치되어 있어야 합니다.
아직 안 하신 분은 이 둘을 먼저 설치하고
오시길 바랍니다.
그 후 다음 라이브러리를 설치하면 됩니다.
pip install fastapi uvicorn google-generativeai python-dotenv
fastapi: FastAPI 프레임 워크
uvicorn: FastAPI 실행
google-generativeai: 구글 AI API 통신
python-dotenv: python: 환경변수 파일 로드
API 키 발급
먼저 Google AI 스튜디오에 접속하고
로그인을 해줍니다.

이후 [Get API key]로 들어간 후
[키 API키 만들기]를 클릭하면 다음과 같이 API 키가 생성됩니다.

참고로 결제 정보를 등록하지 않으면
자동으로 무료 요금제가 됩니다.
처음에 유료 요금제로 떠도 당황하지 않고
기다리면 무료 요금제로 표시됩니다.
이제 API 키를 복사해서 사용하면 됩니다.
FastAPI 서버 만들기
먼저 프로젝트 폴더를 생성한 뒤
해당 폴더에 chatbot.py 파일과 .env파일을 생성합니다.
GOOGLE_API_KEY=your_gemini_api_key_here
.env 파일에는 api키를 저장해두고
외부에 유출되지 않도록 잘 관리하셔야 합니다.
만약 git에 올릴 경우, .gitignore 설정을 하거나
.env 파일을 빼고 업로드 하세요.
자 이제 chatbot.py 파일에 다음 코드를
입력합니다.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import google.generativeai as genai
import os
from dotenv import load_dotenv
# 환경 변수 로드
load_dotenv()
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
if not GOOGLE_API_KEY:
raise Exception("GOOGLE_API_KEY 환경 변수가 설정되지 않았습니다.")
# Google Generative AI 구성
genai.configure(api_key=GOOGLE_API_KEY)
# GenerativeModel 초기화
model = genai.GenerativeModel(
'gemini-1.5-flash',
#AI 모델의 역할 부여
system_instruction="""
넌 내게 유용한 정보를 주는 친구야.
"""
)
# FastAPI 애플리케이션 생성
app = FastAPI(title="Gemini 챗봇")
# 요청 모델 정의
class ChatRequest(BaseModel):
prompt: str
@app.post("/chat/")
async def chat(request: ChatRequest):
try:
# 사용자 프롬프트 추출
user_prompt = request.prompt
# 모델을 사용하여 응답 생성
response = model.generate_content(
user_prompt,
generation_config=genai.types.GenerationConfig(
candidate_count=1,
temperature=0.7
)
)
# 응답 처리
if response.candidates and response.candidates[0].content.parts:
generated_text = ''.join([part.text for part in response.candidates[0].content.parts])
else:
raise HTTPException(status_code=500, detail="유효한 응답 내용을 찾을 수 없습니다.")
return {"reply": generated_text.strip()}
except Exception as e:
raise HTTPException(status_code=500, detail=f"서버 내부 오류: {str(e)}")
Chat Bot 사용하기
이제 서버를 실행시켜 볼까요?
터미널을 열고 다음 명령어를 입력하면
FastAPI 서버가 실행됩니다.
uvicorn chatbot:app --reload
그러면 터미널 창에 나온 주소로 접속 후
URL에 현재 url + "/docs"를 치면 sweager ui가
나옵니다.
해당 페이지에서 테스트를 진행해볼게요.

자 이제 응답을 기다려볼까요?

정상적으로 응답이 출력되는 거 보이시나요?
마무리

자 오늘은 이렇게 챗봇을
직접 만들어보았습니다.
여기서 더 발전시키고 싶다면
연결된 프론트엔드 페이지를 만들거나
역할 부여, 프롬프트를 구체화하고
대화 내역을 기억하여 대답하도록
기능을 추가할 수도 있습니다.
그러면 이제 한 번 여러분만의
AI챗봇을 만들어보세요!
지금까지 코딩에그였습니다.

SSAFY에 대해 궁금하신 분들은 아래 링크를 참조해 주세요!

'대외활동 > SSAFYcial' 카테고리의 다른 글
[싸피와 함께 떠나는 생성형 AI 사파리 여행] 생성형 AI 둘러보기 with 싸파리봇 (0) | 2025.01.19 |
---|---|
[SSAFY 12기] 싸피 1학기를 마친 사람의 짧은 회고 (2) | 2025.01.14 |
[SSAFYcial] 프로젝트를 앞 둔 개발자들을 위한 추천 도서 - SSAFY 교육생을 위한 IT 도서 큐레이션 (0) | 2024.12.31 |
[SSAFYCIAL] SORA AI로 뮤비 만들어 보기 (4) | 2024.12.15 |
[SSAFYCIAL] 개발자의 휴일을 위한 추천 도서 - SSAFY 교육생이 추천하는 IT 도서 큐레이션 (2) | 2024.11.30 |
- Total
- Today
- Yesterday
- 제주코딩베이스캠프
- numpy
- 전자회로
- 더오름
- SSAFYcial
- 알고리즘이론
- 파이썬
- PANDAS
- django
- 백준
- Python
- 생성형 AI
- 웹개발
- 웹프로그래밍
- 위니브엠베서더
- 웹
- 인프런
- it도서큐레이션
- 티스토리챌린지
- SSAFY
- dataframe
- ssafy기자단
- 코딩테스트
- 오블완
- 백준알고리즘
- 인프런강의후기
- 알고리즘
- 인프런강의
- 위니브
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |