Agents

Agent는 LLM을 사용하여 수행할 작업들을 어떤 순서로 실행할지 결정하는 추론엔진입나다. 따라서 Lanuage Model 연결이 필수적으로 요구됩니다. 그 외에도 Agent의 특성에 따라 Tools, Vector Store Retriever, Memory 연결을 필요로합니다.

Agent에는 Additional Parameters로 System message가 존재합니다. System message는 Agent에게 역할을 부여할수도 있고, Agent가 수행해야하는 작업에 대해 예시를 전달할수도 있습니다. 이는 Prompt Engineering의 영역으로 적절한 텍스트를 입력한다면 Agent의 수행 성능이 좋아집니다.

kubChain에서는 아래와 같은 Agents를 제공합니다.

  • Airtable Agent

  • AutoGPT

  • BabyAGI

  • CSV Agent

  • Conversational Agent

  • Conversational Retrieval Agent

  • MRKL Agent for Chat Models

  • MRKL Agent for LLMs

  • OpenAI Assistant

  • OpenAI Function Agent

Airtable Agent

Airtable Agent는 실시간으로 변화하는 데이터에 대해서도 Q&A 챗봇, 실시간 분석을 진행할 수 있습니다. Real-time 데이터 분석이 가능해, Airtable Workspace에서 수정한 데이터에 대한 실시간 분석이 가능합니다.

Agent를 Language Model과 연결해 아래와 같은 순서로 진행하시면 됩니다,

  1. OpenAI 혹은 그 외 LLM 모델을 지정합니다. 예시에서는 ChatOpenAI를 사용하였으며 API 키가 필요합니다.

  2. Airtable Agent의 필수 항목을 입력합니다.

  • Connect Credential: Airtable > Developer Hub에서 발급한 Access Token 입력

  • Base Id: 분석할 데이터 url이 다음과 같다면, https://airtable.com/app11RobdGoX0YNsC/tblJdmvbrgizbYICO/viw9UrP77Id0CE4ee, app11RovdGoX0YNsC이 base id

  • Table Id: 분석할 데이터 url이 다음과 같다면, https://airtable.com/app11RobdGoX0YNsC/tblJdmvbrgizbYICO/viw9UrP77Id0CE4ee, tblJdmvbrgizbYICO이 table id

  1. Airtable Agent의 Language Model 영역에 ChatOpenAI를 연결한 뒤, 우측 상단의 저장 버튼을 눌러줍니다.

BabyAGI

BabyAGI는 자율 AI Agent의 축소 버전으로 스스로 문제를 분석하고 작은 단위로 일을 나누어 답변을 도출합니다.

Marketplaces를 사용하시거나 아래와 같은 순서로 진행하시면 됩니다.

  1. OpenAI 혹은 그 외 LLM 모델을 지정합니다. 예시에서는 ChatOpenAI를 사용하였으며 API 키가 필요합니다.

  2. AI가 생각을 정리해 둘 Vector Store를 설정합니다. 현재는 In-Memory Vector StorePinecone 사용을 추천합니다. Pinecone의 경우 API 키가 필요합니다.

  3. Vector Store를 보조할 Embedding 모델을 지정합니다. 예시에서는 OpenAI Embeddings를 사용하였으며 API키가 필요합니다.

  4. 마지막으로 BabyAGI를 예시와 같이 연결하고 Task Loop(반복 횟수)를 설정하고 질문을 하면 됩니다. Task Loop가 클수록 답변이 정교해질 수는 있지만 답변 시간이 오래 걸립니다. 적당한 횟수를 지정해 주세요.

CSV Agent

CSV Agent는 LLM에 csv파일을 input으로 할 때 모든 데이터를 텍스트형으로 변환하지 않고 데이터프레임을 유지할 수 있도록 합니다. csv파일로 저장된 데이터를 분석할 때 사용하기 좋습니다.

Conversational Agent

Memory를 연결하여 이전 대화 내용을 기억하는 대화형 Agent로 Tool를 연결해 특정 작업을 잘 수행하는 Agent로 만들 수 있습니다. LLM은 언어모델이라 수학 계산이 비교적 안좋은 경향이 있는데, Calculator Tool을 Agent에 연결함으로 수학 계산을 좀 더 쉽게 만들어 줍니다.

Calculator Tool 없이 Conversational Chain을 이용하여 계산문제를 질문하면 숫자계산을 하기보다 최대한 문자로 풀어서 대답하는 경향을 보입니다. 반면, Conversational Agent를 이용하여 Calculator Tool을 연결하면 별다른 문자열 없이 계산된 결과만 숫자로 답변하는 것을 확인할 수 있습니다.

Conversational Retrieval Agent

Conversational Retrieval Agent는 사용자의 질문을 대화 기록에 저장하고 검색이 필요하면 검색하여 답변하는 Agent입니다.

Marketplaces를 사용하시거나 아래와 같은 순서로 진행하시면 됩니다. 설명은 크게 두 부분으로 나누어서 하겠습니다.

먼저 Conversational과 관련된 부분입니다. (ChatOpenAI, Buffer Memory)

  1. LLMs 혹은 Chat Models 탭에서 OpenAI 혹은 그 외 LLM 모델을 선택합니다. 예시에서는 ChatOpenAI를 사용하였으며 API 키가 필요합니다.

  2. Memory 탭에서 대화 저장 방식에 따라 메모리를 선택합니다. 예시에서는 기본적으로 사용하는 Buffer Memory를 사용하였습니다.

다음으로 Retrieval과 관련된 부분입니다.(Pdf File, Recursive Character Text Splitter, OpenAI Embeddings, In-Memory Vector Store, Retriever Tool)

  1. Document Loaders 탭에서 검색할 문서를 선택합니다. 예시에서는 PDF 파일을 사용하였기에 Pdf File을 사용하였습니다.

  2. Text Splitters 탭에서 나누는 방식에 따라 Splitter를 선택합니다. 예시에서는 Recursive Character Text Splitter를 사용하였습니다.

  3. Embeddings 탭에서 Embedding 모델을 선택합니다. 예시에서는 OpenAI Embeddings를 사용하였으며 API키가 필요합니다.

  4. Vector Stores에서 Embedding된 문서가 저장될 Vector Store를 선택합니다. 현재는 In-Memory Vector StorePinecone 사용을 추천합니다. Pinecone의 경우 API 키가 필요합니다.

  5. Tools 탭에서 Retriever Tool을 선택합니다. Agent는 Tools로 연결되기 때문에 Retriever을 사용하기 위해 Tool로 연결합니다.

마지막으로 Conversational Retrieval Agent를 연결합니다.

OpenAI Assistant

OpenAI의 Assistant 서비스를 간단하게 사용할 수 있도록 만들어진 노드입니다. OpenAI API 키가 필요합니다.

  • ASSISTANT NAME: 원하는 Assistant Name을 작성합니다.

  • ASSISTANT DESCRIPTION: 만들고자 하는 Assistant에 대한 설명을 간략하게 작성합니다.

  • ASSISTANT ICON SRC: Assistant 아이콘 소스 주소가 자동으로 입력됩니다.

  • ASSISTANT MODEL: 원하는 모델을 선택합니다.

  • OPENAI CREDENTIAL: OpenAI API 키를 입력합니다.

  • ASSISTANT INSTRUCTION: Assistant의 기능을 Assistant Instruction에 prompt 형식으로 작성합니다.

ASSISTANT INSTRUCTION EXAMPLE

제품 도입 문의를 위한 약속을 잡는 Assistant

You are a helpful assistant that work for company.

Use the data in provided file to answer questions about company or products. After answering a question, ask the user if they would like to book an appointment or consultation.

If user asks to set up an appointment or book a consultation, then collect the following information from the user and then send this information to function customer_book.

  • name

  • email

  • interested in...

Once you have all this information, respond with a message like "Thank you, someone from sales will get back to you soon"

  • ASSISTANT TOOLS: 기본적으로 Code 해석을 위한 Code Interpreter Tool과 Retrieval Tool이 세팅되어있습니다.

  • KNOWLEDGE FILES: Assistant가 꼭 알아야하는 배경지식이 담긴 파일을 업로드할 수 있습니다. 위의 Assistant instruction example에서 회사 제품 상담 및 약속을 잡는 Assistant로 역할을 부여했기 때문에 회사의 제품과 그 소개가 있는 문서를 업로드하여 배경지식으로 사용할 수 있습니다.

Use Case - 보험에서는 Assistant에게 보험상담사 역할을 부여하고, 고객의 이름과 질병을 물어본 이후 해당 고객의 질병에 따른 보험금이 얼마인지 문서에서 찾아 답변해주는 기능을 만들었습니다. 자세한 내용은 Use Case - 보험에서 확인하실 수 있습니다.

Last updated