먼저 Openai의 API를 가져오는 것은 다른 블로그들 많으니 생략
그리고 이 API는 유출되면 골치아파지니 꼭
.env를 이용해서 관리하도록 하자
pip install python-dotenv
다운로드 받은 다음 .env 파일을 최상위 폴더에 두고
.gitignore에 추가해 준다
.env는 다음과 같이 필요한 것들을 자유롭게 적으면 된다 (" "필요 x)
base_url= http://10.0.0.0
api_key= ABCDEFG
1. 기본 개념 정리
제일 먼저 당연하게도 openai 패키지를 다운받아야 한다
python -m pip install --upgrade pip
pip install --upgrade --quiet openai
pip install python-dotenv
그리고 아래의 기본 코드를 살펴보자
import os
from dotenv import load_dotenv
load_dotenv()
base_url = os.getenv('base_url') # .env에 적은 변수랑 같으면 됨
api_key = os.getenv('api_key') # .env에 적은 변수랑 같으면 됨
from openai import OpenAI
load_dotenv() #환경 불렁오는 곳
# 서버를 이용한 모델 사용할 경우 base_url을 지정, OpenAI는 생략
client = OpenAI(
base_url=base_url, # vLLM 서버 주소 (OpenAI 사용시 생략)
api_key=api_key # vLLM은 인증이 필요 없으므로 아무 값이나 입력
)
#Chat completion : 언어모델이 사용자가 입력한 텍스트에 대화형식으로 응답을 생성
response = client.chat.completions.create(
model="/model", #"gpt-4o"
messages=[
{"role": "system", "content": "너는 백설공주 이야기 속의 거울이야. 그 이야기 속의 마법 거울의 캐릭터에 부합하게 답변해줘."}, #system prompt 설정
{"role": "user", "content": "세상에서 누가 제일 아름답니?"},
],
max_tokens=256, #기본 256, 최대 2048
temperature=0.7,
)
print(response)
print('----------------------------------------') # ⑤
print(response.choices[0].message.content)
Openai는 서버 비용이 들어서, 아예 서버에 vLLM 올려놓고 사용중이여서 URL을 적어 주었다
제일 중요한 부분은
client.chat.completions.create 부분이다
client.chat.completions.create
시스템(System) 역할
시스템 역할은 ChatGPT의 행동 지침을 설정하는 데 사용됩니다.
즉, 시스템 프롬포트 역할을 할 때 사용한다 (System Prompt)
{"role": "system", "content": "너는 백설공주 이야기 속의 거울이야. 그 이야기 속의 마법 거울의 캐릭터에 부합하게 답변해줘."}, #system prompt 설정
즉, role을 부여하는 것
ChatGPT에 특정 상황이나 컨텍스트를 제시할 때 활용
영어로 할 때는, "Act as a ___" 등으로 사용
보조자(Assistant) 역할
보조자 역할은 주로 대화의 연속성을 유지하고 이전 대화 내용을 바탕으로 응답을 생성하는 데 사용
- 즉 Few Shot 러닝에서 프롬포트 학습하는 부분이라 생각하면 됨
- 일반적으로는 대화 내용들 List에 저장
이 역할은 질문을 하기보다는, 이전의 대화를 참조하여 새로운 프롬프트에 대한 응답을 생성할 때 중요
- 그래서 주로 멀티 턴에서 사용한다
아래 코드 예시참고
사용자(User) 역할
사용자 역할은 일반적으로 ChatGPT에게 질문을 하는 경우에 사용
- 즉 사용자 프롬포트라고 생각하면 된다
사용자로부터의 입력은 대화의 흐름을 이어가고, 이전 대화 내용을 참조하여 응답을 생성하는 데 기준점이 된다.
max_tokens
생성될 text의 최대 길이 : 기본 256 / 최대 2048
temperature
텍스트의 다양성과 창의성을 조절
기본 값 : 0.7 / 일반적으로 0.5 ~ 1.0 사용
낮은 temperature : 일관성있고 예측 가능한 결과 제공
높은 temperature : 창의적이고 다양한 결과 제공
Multi Turn (멀티턴)
위에서 언급한 assistant 기능을 이용해서 사용자의 대화를 저장하여
다음과 같이 멀티턴을 구현 할 수 있다
Multi-turn : 이전 대화를 기억하고 적절하게 반응하는 것
def get_ai_response(messages):
response = client.chat.completions.create(
model="/model", #"gpt-4o"
temperature=0.9, # 응답 생성에 사용할 temperature 설정
max_tokens=256, #기본 256, 최대 2048
messages=messages, # 대화 기록을 입력으로 전달
)
return response.choices[0].message.content # 생성된 응답의 내용 반환
messages = [
{"role": "system", "content": "너는 사용자를 도와주는 상담사야."}, # 초기 시스템 메시지
]
while True:
user_input = input("사용자: ") # 사용자 입력 받기
if user_input == "exit": # ② 사용자가 대화를 종료하려는지 확인인
break
messages.append({"role": "user", "content": user_input}) # 사용자 메시지를 대화 기록에 추가
ai_response = get_ai_response(messages) # 대화 기록을 기반으로 AI 응답 가져오기
messages.append({"role": "assistant", "content": ai_response}) # AI 응답 대화 기록에 추가하기
print("AI: " + ai_response) # AI 응답 출력
'AI Study > AI Agent' 카테고리의 다른 글
| [AI Agent] ollama 모델 Open Web ui 연동(Docker) (0) | 2025.10.29 |
|---|---|
| Ollama를 이용한 환경 세팅 (0) | 2025.10.27 |
| [AI Agent] Langchain의 기초 (0) | 2025.10.23 |
| [AI Agent] OPEN AI의 세가지 API (0) | 2025.10.23 |
| RAG의 등장 배경 및 기초 설명 (0) | 2025.09.17 |