공부/AI(11)
-
[LangChain] Agent와 Tool 사용법
LangChain에서 Agent는 주어진 쿼리에 대해 스스로 생각하여 적절한 행동을 선택하는 대리인이라고 보면 된다. Agent는 자신의 목표를 달성할 때까지 자신에게 주어진 Tool들을 기반으로 적절한 Action을 수행한다. 한번 유명인의 나이를 가지고 수학 연산을 해보자. Tool필요한 tool은 두 가지이다.유명인에 대한 검색 : 최신 정보를 반영하기 위해 검색 api를 사용한다.수학 연산 : 복잡한 수학 연산을 위해tool을 정의해보자. tool을 정의하는 방법에도 여러가지가 있다. 1. Tool 데이터 클래스 사용Tool.from_function( func=llm_math_chain.run, name="Calculator", description="useful for when ..
2023.11.27 -
[LangChain] Chains와 LCEL 사용법
LLM은 단독으로 사용하는 것보다는 여러 요소들(prompt, parser 등등...)을 함께 사용하는 것이 좋다. 이 때 LangChain이 제공해주는 Chains을 사용하면 여러 요소들을 쉽게 통합할 수 있다. 그리고 이 Chains를 구현하기 위해서 크게 두가지 방법이 존재하는데 그 중 LCEL에 대해서 알아보자. LCEL(LangChain Expression Language) prompt, chat model, output parser들을 LCEL을 사용하여 연결해보자. 우선 역사적 인물의 이름을 입력하면 이 인물의 정보를 class로 반환해주는 것을 만들어보자. prompt는 ChatPromptTemplate, chat model은 ChatOpenAI, output parser는 Pydantic..
2023.10.27 -
[LangChain] Retrieval, RAG (document에서 검색하기)
저번 포스팅에서 기본적인 LangChain 동작 방식과 여러 옵션들을 알아보았다. 이번에는 Retrieval을 통해서 원하는 document에 질의를 한 후 원하는 답변을 얻어보려고 한다. RAG(Retrieval Augmented Generation) RAG는 검색 증강 생성으로 모델이 답변을 생성하는데 도움을 줄 수 있다. LLM 기초 사용법을 알아보면서 prompt를 생성할 때 배경 context라던가 역할을 부여해주면서 더욱 퀄리티 있는 답변을 얻을 수 있었다. RAG 역시 이와 비슷한 역할을 하는데 모델의 답변을 강화하기 위해서 외부에 있는 데이터에서 검색을 하는 것이다. 추가적인 정보를 제공해주기 때문에 정확도 높은 답변을 얻을 수 있는 것이다. 다음은 검색 과정을 나타낸 그림이다. Docum..
2023.10.23 -
[LangChain] Few Shot Prompting, Dynamic Few Shot Prompting
https://growth-coder.tistory.com/254 이전 포스팅에서 prompt에 대해서 알아보았다. 이번 포스팅에서는 Few shot prompting에 대해서 알아보자. Prompt Engineering prompt engineering 이란 LLM을 애플리케이션에 효율적으로 사용할 수 있도록 prompt를 최적화하는 기술이다. prompt engineering 기술을 활용한다면 모델에게 구체적인 작업을 지시할 수도 있고 질문, 답변 형식도 원하는대로 바꿀 수가 있다. Zero-Shot Prompting과 Few-Shot Prompting zero shot prompting이란 예시를 주는 것처럼 학습을 하지 않아도 예측을 진행하는 prompting이다. chat gpt에게 다음 문장을..
2023.10.21 -
[LangChain] Prompts, Caching, Streaming, Token Usage
https://growth-coder.tistory.com/253 이전 포스팅에서 Model input output에 대해서 알아보았다. 위 단계 중 Format을 보면 원하는 형식을 만들어서 거기에 끼워맞추는 모습을 볼 수 있다. PromptTemplate과 ChatPromptTemplate을 사용하여 format을 해보자. 참고로 이전 포스팅과 마찬가지로 OPENAI_API_KEY가 환경 변수로 등록되어 있어야 한다. PromptTemplate from langchain.prompts import PromptTemplate from langchain.chat_models import ChatOpenAI chat = ChatOpenAI() prompt_template = PromptTemplate.fr..
2023.10.20 -
[LangChain] LangChain 개념 및 사용법
LangChain LangChain은 LLM(Large Language Model)을 사용하여 애플리케이션 생성을 쉽게 할 수 있도록 도와주는 프레임워크이다. 우선 Model input output은 다음과 같다. 순서대로 살펴보자. Format 이 단계에서는 마치 함수처럼 미리 입력 형식을 작성할 수 있다. AI에게 미리 배경 context를 알려줄 수도 있고 (당신은 산술 연산을 하는 AI 입니다.) template을 작성해서 형식을 미리 정할 수도 있다. ( {A}와 {B}를 더하시오 ) Predict 이 단계에서는 모델을 사용하는데 LangChain은 크게 두 종류, LLM과 Chat Model 인터페이스를 제공한다. 이 모델을 통해 예측값을 반환한다. LLM은 String을 받아서 String을..
2023.10.18