from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "This system can response about IT system"),
("user", "{user_input}"),
])
params = {
"temperature" : 0.3,
"max_tokens" : 100,
"frequency_penalty" : 0.5,
"presence_penalty" : 0.5,
"stop" : ["\n"]
}
model = ChatOpenAI(max_tokens=500)
query = 'Pacemaker 구성 가이드'
messages = prompt.format_messages(user_input=query)
before_answer = model.invoke(messages)
print('Normal case -------------------------------------------------')
print(before_answer)
# invote message with parameters
after_answer = model.invoke(messages, **params)
print('Apply parameters -------------------------------------------------')
print(after_answer)
- Temperature : 생성된 값의 다양성
- 값이 작을수록 예측 가능하고 일관된 출력 생성
- 값이 클수록 다양하고 예측하기 어려운 출력 생성
- max_tokens : 생성할 최대 토큰 수 지정 (텍스트 길이 제한)
- top_p : 생성과정에서 특정 확률분포 내에서 사위 P% 토큰만을 고려하는 방식
- frequency_penalty : 값이 클수록 이미 등장한 단어나 구절이 등장할 확률 감소
- presence_penalty : 값이 클수록 아직 등장하지 않은 새로운 단어의 사용이 장려
- stop : 특정 단어나 구절이 등장할 경우 생성을 멈추도록 설정