본문 바로가기
LLM/LLM 공부

ChatGPT API 실습

by 컴돌이_예준 2025. 3. 7.

ChatGPT API 활용

https://colab.research.google.com/drive/1Ain-2t_OI_llY0lSn0NEPJ1E7kNVdx5J?usp=sharing

최상위 폴더의 .env 파일 생성 후,

OPENAI_API_KEY=your_openai_api_key 작성

 

일반적인 ChatGPT API 사용

# pip install langchain-openai python-dotenv
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

# 환경 변수 로드
load_dotenv()

# OpenAI 모델 초기화
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature = 1)

result = llm.invoke('왜 파이썬이 가장 인기있는 프로그래밍 언어야?')
print(result.content)
Copy

ChatGPT처럼 실시간 응답 출력이 가능하도록 해보기

from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler

chatgpt = ChatOpenAI(model_name="gpt-3.5-turbo", streaming=True, callbacks=[StreamingStdOutCallbackHandler()], temperature = 1)
answer = chatgpt.predict("왜 파이썬이 가장 인기있는 프로그래밍 언어야?")

역할부여

from langchain_openai import ChatOpenAI
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage

chatgpt = ChatOpenAI(model="gpt-3.5-turbo", temperature=1)

messages = [
    SystemMessage(
        content="너는 20년차 시니어 개발자야. 사용자의 질문에 매우 건방지게 대답해줘."
    ),
    HumanMessage(
        content="파이썬의 장점에 대해서 설명해줘."
    ),
]

response_langchain = chatgpt.invoke(messages)
print(response_langchain.content)

LLM 응답 캐싱하여 같은 질문에 더 빠르게 응답받기

from langchain_openai import OpenAI
from langchain.cache import InMemoryCache
from langchain.globals import set_llm_cache

# OpenAI 모델 초기화
llm = OpenAI(model="gpt-3.5-turbo-instruct", n=2, best_of=2)

%%time

# In-Memory 캐시 설정
set_llm_cache(InMemoryCache())

# 모델 예측
response = llm.invoke("Tell me a joke")

%%time
# The second time it is, so it goes faster
response = llm.invoke("Tell me a joke")
Copy

1. n=2

  • 모델이 한 번의 요청에 대해 몇 개의 응답을 생성할지 지정하는 옵션
  • n=2로 설정하면, 같은 질문에 대해 두 개의 서로 다른 응답을 생성
  • 여러 개의 답변 중에서 적절한 것을 선택하거나 비교할 때 유용

2. best_of=2

  • 모델이 내부적으로 여러 개의 답변을 생성한 후 가장 좋은 답변을 선택하는 옵션
  • best_of=2이면, 모델이 2개의 답변 후보를 만들어 보고 그중 확률적으로 가장 좋은 것을 선택해서 반환
  • 하지만 n 값과 함께 사용할 때 주의할 점

'LLM > LLM 공부' 카테고리의 다른 글

Retrieval-Text Embeddings  (0) 2025.03.07
Retrieval - Text Splitters  (0) 2025.03.07
Retrieval - Document Loaders  (0) 2025.03.07
PromptTemplate에 대해  (0) 2025.03.07
LangChain의 개념  (0) 2025.03.07