- Today
- Total
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- graphql
- chart
- 채팅
- error
- API
- Flutter
- nextjs
- 코인차트
- Firebase
- 주식차트
- 항해99
- typescript
- 차트구현
- javascript
- 차트
- 리액트
- Redux
- 차트만들기
- typeorm
- 3주차
- websocket
- 주식
- 코인
- 비전공자
- Coin
- 에러
- react
- nestjs
- rtk
- apollo
Archives
Act99 기술블로그
AI(LangChain) 공부 3일차 본문
들어가기 앞서
오로지 공부할 때 메모장용으로 사용하는 글입니다.
LangChain expression language Interface
Components in LangChain
Component & Input Type & Ouptput Type
만약 코드를
chain = prompt(Prompt) | chat(ChatModel || LLM) | CommaOutputParser() (OutputParser)
로 짰다면,
1. prompt => input = dict && output = PromptValue
2. chat => input = PromptValue && output = ChatMessage (string or list or ChatMessage)
3. OutputParser => input = The output of an LLM or ChatModel && output = Depends on the parser
가 될것
OpenAI Chat Completions
Chat Completions API Call 방법
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
Response 형태
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
"role": "assistant"
},
"logprobs": null
}
],
"created": 1677664795,
"id": "~~~~",
"model": "gpt-4o-mini",
"object": "chat.completion",
"usage": {
"completion_tokens": 17,
"prompt_tokens": 57,
"total_tokens": 74
}
}
데이터 추출 방법 (response extract)
message = completion.choices[0].message.content
Chaining
랭체인에서 chain 의 output 을 이용해 다른 chain 을 실행시켜서 chaining 을 할 수 있음.
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
chain1 = prompt1 | chat
#여기서 prompt1 에 필요한 인자가 a 라고 가정 하자
chain2 = prompt2 | chat
#여기서 prompt2 에 필요한 인자가 b 라고 가정 하자
#b 는 chain1 의 결과값을 가지고 작동해야한다면??
#즉,
#chain3 = chain1 | chain2 ====> 이렇게 체이닝하고 싶다면??
chain3 = {"b": chain1} | chain2
chain3.invoke({
"a": "아이폰"
})
#이렇게 체이닝하면 되는데, {"b": chain1} ==> 이런 문법이 참 놀랍다.
! 깨알 팁
- chat model 에서 streaming 을 True 로 한 뒤, callback 에 StreamingStdOutCallbackHandler 을 넣어주면 응답값을 실시간으로 받을 수 있다.
예시
chat = ChatOpenAI(temperature=0.1, streaming=True, callbacks=[StreamingStdOutCallbackHandler()])
참고문헌
https://platform.openai.com/docs/guides/chat-completions/response-format
https://python.langchain.com/v0.1/docs/expression_language/interface/
오늘은 랭체인 코드좀 치면서 익숙해져봐야겠다.