LangChain을 활용한 Tool Calling # 2

2024. 11. 29. 02:49·AI/어플리케이션 개발

자연어 처리와 대화형 AI 모델을 통해 복잡한 문제를 해결하려면, 단순히 언어를 이해하는 것을 넘어서 다양한 툴을 활용할 필요가 있습니다. LangChain은 이러한 필요성을 충족시킬 수 있는 프레임워크로, 특히 Tool Calling 기능을 통해 외부 데이터와의 상호작용을 쉽게 만들어 줍니다. 이 글에서는 LangChain을 활용한 Tool Calling의 작동 원리와 실제 사용 방법을 구체적인 예제를 통해 소개하겠습니다.

 


 

LangChain이란?

LangChain은 자연어 처리 모델을 좀 더 강력하고 유연하게 사용할 수 있게 도와주는 Python 기반의 오픈소스 프레임워크입니다. 이 프레임워크는 AI 모델과 다양한 외부 도구를 연결하는 데 초점을 맞추고 있어, AI 모델이 API 호출, 데이터베이스 쿼리, 계산 작업 등을 직접 수행하도록 할 수 있습니다. Tool Calling은 이러한 외부 툴들과의 상호작용을 통해 문제를 해결하는 데 사용되는 LangChain의 핵심 기능 중 하나입니다. LangChain에 대한 추가적인 정보는 블로그의 이전 포스트를 참고해주세요.

 

LLM 애플리케이션 개발 훑어보기 - LangChain #1 Intro 및 QuickStart

Introduction LangChain은 인공 지능(AI) 및 그 기계 학습 하위 집합으로 작업하는 소프트웨어 개발자가 대규모 언어 모델을 다른 외부 구성 요소와 결합하여 LLM 기반 애플리케이션을 개발할 수 있는 오

dytis.tistory.com

 

Tool Calling의 개념

Tool Calling은 말 그대로 특정 작업을 수행할 수 있는 툴을 호출하는 것을 의미합니다. 예를 들어, AI가 날씨 정보를 제공해야 할 때, AI가 직접 날씨 API를 호출하여 사용자가 원하는 정보를 전달하는 방식입니다. LangChain을 통해 LLM(Large Language Model)이 직접 툴을 호출하고, 그 결과를 사용하여 사용자에게 답변을 제공할 수 있습니다. Tool Calling에 대한 추가적인 정보는 블로그의 이전 포스트를 참고해주세요.

 

LLM 어플리케이션에서의 Tool Calling: AI가 더 똑똑해지는 방법

LLM(대형 언어 모델) 어플리케이션이 갈수록 더 많은 일들을 할 수 있게 되면서, "Tool calling" 기능은 그중에서도 가장 주목할 만한 혁신 중 하나로 자리 잡고 있습니다. 이 기능은 AI가 외부의 도구

dytis.tistory.com

 


 

How to: use built-in tools and toolkits

 

How to use built-in tools and toolkits | 🦜️🔗 LangChain

This guide assumes familiarity with the following concepts:

python.langchain.com

LangChain에는 다양한 서드 파티 도구가 있습니다.

 

Search 도구

Tool/Toolkit Free/Paid Return Data
Bing Search Paid URL, Snippet, Title
Brave Search Free URL, Snippet, Title
DuckDuckgoSearch Free URL, Snippet, Title
Exa Search 1000 free searches/month URL, Author, Title, Published Date
Google Search Paid URL, Snippet, Title
Google Serper Free URL, Snippet, Title, Search Rank, Site Links
Jina Search 1M Response Tokens Free URL, Snippet, Title, Page Content
Mojeek Search Paid URL, Snippet, Title
SearchApi 100 Free Searches on Sign Up URL, Snippet, Title, Search Rank, Site Links, Authors
SearxNG Search Free URL, Snippet, Title, Category
SerpAPI 100 Free Searches/Month Answer
Tavily Search 1000 free searches/month URL, Content, Title, Images, Answer
You.com Search Free for 60 days URL, Title, Page Content

 

Code 인터프리터 (Code Interpreter)

Tool/Toolkit Supported Languages Sandbox Lifetime Supports File Uploads Return Types Supports Self-Hosting
Azure Container Apps dynamic sessions Python 1 Hour ✅ Text, Images ❌
Bearly Code Interpreter Python Resets on Execution ✅ Text ❌
E2B Data Analysis Python. In beta: JavaScript, R, Java 24 Hours ✅ Text, Images, Videos ✅
Riza Code Interpreter Python, JavaScript, PHP, Ruby Resets on Execution ✅ Text ✅

 

생산성 (Productivity)

Tool/Toolkit Pricing
Github Toolkit Free
Gitlab Toolkit Free for personal project
Gmail Toolkit Free, with limit of 250 quota units per user per second
Infobip Tool Free trial, with variable pricing after
Jira Toolkit Free, with rate limits
Office365 Toolkit Free with Office365, includes rate limits
Slack Toolkit Free
Twilio Tool Free trial, with pay-as-you-go pricing after

 

웹 브라우징 (Web browsing)

Tool/Toolkit Pricing Supports Interacting with the Browser
MultiOn Toolkit 40 free requests/day ✅
PlayWright Browser Toolkit Free ✅
Requests Toolkit Free ❌

 

데이터베이스 (database)

Tool/Toolkit Allowed Operations
Cassandra Database Toolkit SELECT and schema introspection
SQLDatabase Toolkit Any SQL operation
Spark SQL Toolkit Any SQL operation

 

이 외의 다양한 Tool

Tool/Tollkit Description
AINetwork Toolkit AI Network은 대규모 AI 모델과 애플리케이션을 지원하기 위해 설계된 레이어 1 블록체인입니다.
Alpha Vantage Alpha Vantage는 실시간 및 과거 금융 데이터를 제공합니다.
Amadeus Toolkit 이 노트북은 LangChain을 Amadeus 툴킷에 연결하는 방법을 설명합니다.
ArXiv 이 노트북은 ArXiv 툴을 에이전트와 함께 사용하는 방법을 설명합니다.
AskNews AskNews는 최신 글로벌 뉴스(또는 과거 뉴스)를 LLM에 주입합니다.
AWS Lambda Amazon AWS Lambda는 서버리스 컴퓨팅 서비스입니다.
Azure AI Services Toolkit 이 툴킷은 Azure AI Services API와 상호작용하기 위해 사용됩니다.
Azure Cognitive Services Toolkit 이 툴킷은 Azure Cognitive Services API와 상호작용하기 위해 사용됩니다.
Azure Container Apps dynamic sessions Azure Container Apps는 보안적이고 확장 가능한 환경을 제공합니다.
Shell (bash) 에이전트에 셸 접근을 허용하는 것은 강력하지만, 외부 사용에는 위험이 있을 수 있습니다.
Bearly Code Interpreter Bearly Code Interpreter는 원격 코드 실행을 가능하게 합니다.
CDP CDP Agentkit 툴킷에는 LLM 에이전트가 상호작용할 수 있는 도구가 포함되어 있습니다.
ClickUp Toolkit ClickUp은 중소기업 및 개인을 위한 생산성 플랫폼입니다.
Cogniswitch Toolkit CogniSwitch는 프로덕션 수준의 애플리케이션을 구축할 수 있게 합니다.
Connery Toolkit and Tools Connery 툴킷과 도구를 사용하여 Connery Action을 통합할 수 있습니다.
Dall-E Image Generator OpenAI Dall-E는 텍스트에서 이미지를 생성하는 모델입니다.
Databricks Unity Catalog (UC) 이 노트북은 LangChain 툴로 UC 기능을 사용하는 방법을 보여줍니다.
DataForSEO DataForSeo는 종합적인 SEO 및 디지털 마케팅 데이터를 제공합니다.
Dataherald 이 노트북은 dataherald 구성 요소를 사용하는 방법을 설명합니다.
Eden AI 이 Jupyter 노트북은 Eden AI 도구를 AI 에이전트와 함께 사용하는 방법을 설명합니다.
Eleven Labs Text2Speech 이 노트북은 ElevenLabs API를 사용하여 텍스트를 음성으로 변환하는 방법을 보여줍니다.
File System LangChain은 로컬 파일 시스템과 상호작용하기 위한 도구를 제공합니다.
Golden Query Golden은 자연어 API를 통해 데이터를 쿼리하고 풍부하게 만드는 도구를 제공합니다.
Google Books Google Books 사용 방법 개요
Google Cloud Text-to-Speech Google Cloud Text-to-Speech는 자연스러운 음성을 합성하는 기능을 제공합니다.
Gradio Hugging Face Spaces에는 수천 개의 Gradio 앱이 있습니다. 이 라이브러리를 통해 접근 가능합니다.
GraphQL GraphQL은 API를 쿼리하기 위한 언어이자 실행 런타임입니다.
Human as a tool 인간은 AGI이기 때문에 AI를 돕기 위한 도구로 사용될 수 있습니다.
IFTTT WebHooks 이 노트북은 IFTTT Webhooks를 사용하는 방법을 설명합니다.
Ionic Shopping Tool Ionic은 AI 어시스턴트를 위한 전자상거래 마켓플레이스를 제공합니다.
Lemon Agent Lemon Agent는 강력한 AI 어시스턴트를 몇 분 안에 구축하고 자동화할 수 있게 돕습니다.
Memorize 비지도 학습을 통해 LLM 자체를 미세 조정하여 정보를 암기하는 방법을 설명합니다.
NASA Toolkit 이 노트북은 NASA 툴킷과 상호작용하는 방법을 설명합니다.
Nuclia Understanding Nuclia는 비정형 데이터를 자동으로 인덱싱하여 내부 데이터베이스에서 검색할 수 있게 합니다.
NVIDIA Riva: ASR and TTS NVIDIA Riva는 자동 음성 인식 및 음성 합성 기능을 제공합니다.
OpenAPI Toolkit 임의의 API를 소비할 수 있는 에이전트를 구축할 수 있습니다. 이 경우 API는 OpenAPI 규격을 따릅니다.
Natural Language API Toolkits Natural Language API Toolkits(NLAToolkits)는 LangChain 에이전트가 자연어 API와 상호작용할 수 있도록 합니다.
Oracle AI Vector Search: Generate Summary Oracle AI Vector Search는 AI 애플리케이션을 위한 벡터 검색 솔루션입니다.
Passio NutritionAI NutritionAI는 AI 어시스턴트에 음식 영양 정보를 추가할 수 있는 도구입니다.
Polygon IO Toolkit and Tools 이 노트북은 Polygon IO와 상호작용하는 방법을 설명합니다.
PowerBI Toolkit 이 노트북은 Power BI 데이터셋과 상호작용하는 방법을 보여줍니다.
PubMed PubMed®는 생물 의학 문헌에 대한 3500만 개 이상의 인용을 제공합니다.
Robocorp Toolkit 이 노트북은 Robocorp Action Server와 시작하는 방법을 설명합니다.
SceneXplain SceneXplain은 이미지 설명 서비스를 제공합니다.
Semantic Scholar API Tool 이 노트북은 Semantic Scholar 도구를 에이전트와 함께 사용하는 방법을 보여줍니다.
StackExchange Stack Exchange는 질문과 답변 형식의 웹사이트 네트워크입니다.
Steam Toolkit Steam은 비디오 게임 디지털 배포 서비스입니다.
Upstage 이 노트북은 Upstage 기반의 검사 툴을 사용하는 방법을 설명합니다.
Wikidata Wikidata는 자유롭고 개방된 지식 베이스로 읽기 및 편집이 가능합니다.
Wikipedia Wikipedia는 다국어의 자유 온라인 백과사전입니다.
Wolfram Alpha 이 노트북은 Wolfram Alpha 구성 요소를 사용하는 방법을 설명합니다.
Yahoo Finance News 이 노트북은 Yahoo Finance News 툴을 사용하는 방법을 설명합니다.
YouTube YouTube Search 패키지를 사용하여 YouTube 비디오를 검색하는 방법을 설명합니다.
ZenGuard AI ZenGuard AI를 Langchain에 빠르게 설정하는 방법을 설명하는 도구입니다.

 

 

Example: Wikipedia

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

api_wrapper = WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=100)
tool = WikipediaQueryRun(api_wrapper=api_wrapper)

print(tool.invoke({"query": "langchain"}))

해당 도구에는 다음과 같은 기본값이 연결되어 있습니다.

print(f"Name: {tool.name}")
print(f"Description: {tool.description}")
print(f"args schema: {tool.args}")
print(f"returns directly?: {tool.return_direct}")

 

 

기본 Tools를 커스터마이징 하기

인수의 내장된 이름, 설명 및 JSON 스키마를 수정할 수도 있습니다. 인수의 JSON 스키마를 정의할 때 입력은 함수와 동일하게 유지해야 하므로 변경해서는 안 됩니다. 하지만 각 입력에 대한 사용자 정의 설명을 쉽게 정의할 수 있습니다.

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
from pydantic import BaseModel, Field


class WikiInputs(BaseModel):
    """Inputs to the wikipedia tool."""

    query: str = Field(
        description="query to look up in Wikipedia, should be 3 or less words"
    )


tool = WikipediaQueryRun(
    name="wiki-tool",
    description="look up things in wikipedia",
    args_schema=WikiInputs,
    api_wrapper=api_wrapper,
    return_direct=True,
)

print(tool.run("langchain"))

print(f"Name: {tool.name}")
print(f"Description: {tool.description}")
print(f"args schema: {tool.args}")
print(f"returns directly?: {tool.return_direct}")

 

 

빌트인 toolkits 사용하기

툴킷은 특정 작업에 함께 사용하도록 설계된 도구 모음입니다.

모든 툴킷은 도구 목록을 반환하는 get_tools 메서드를 노출합니다. 일반적으로 다음과 같은 방식으로 사용해야 합니다.

# Initialize a toolkit
toolkit = ExampleTookit(...)

# Get list of tools
tools = toolkit.get_tools()
저작자표시 (새창열림)

'AI > 어플리케이션 개발' 카테고리의 다른 글

LangChain을 활용한 Tool Calling # 4  (3) 2024.11.29
LangChain을 활용한 Tool Calling # 3  (0) 2024.11.29
LangChain을 활용한 Tool Calling # 1  (2) 2024.11.29
LLM 어플리케이션에서의 Tool Calling: AI가 더 똑똑해지는 방법  (0) 2024.11.29
LLM 애플리케이션 개발 훑어보기 - LangChain #3 Model I/O  (1) 2024.01.23
'AI/어플리케이션 개발' 카테고리의 다른 글
  • LangChain을 활용한 Tool Calling # 4
  • LangChain을 활용한 Tool Calling # 3
  • LangChain을 활용한 Tool Calling # 1
  • LLM 어플리케이션에서의 Tool Calling: AI가 더 똑똑해지는 방법
pfldy2850
pfldy2850
인공지능의 서비스화와 현실화에 관심이 많은 엔지니어입니다.
  • pfldy2850
    DEV.DY
    Github LinkedIn
  • 전체
    오늘
    어제
    • All (105) N
      • AI (68)
        • 어플리케이션 개발 (11)
        • 모델 인퍼런스 (9)
        • 검색 시스템 (11)
        • MLOps (8)
        • 기술,논문 리뷰 (7)
        • Lecture notes (10)
        • 오픈소스 릴리즈 노트 (12)
      • Infra (4)
        • Kubernetes (1)
        • Service Mesh (1)
        • Service Proxy (1)
        • Storage (1)
      • Data Engineering (4)
        • Spark (3)
        • Kafka (1)
        • Delta Lake (0)
      • 컴퓨터 공학 (2)
        • 소프트웨어 공학 (2)
      • 개발 (16) N
        • ReactJS (8)
        • NodeJS (2)
        • Python (4) N
        • Pytorch (1)
        • git (1)
      • 영어공부 (2)
        • GPT로 영어 회화 공부 (2)
      • 활동 (2)
        • 2017 NDC (2)
      • 기타 (1)
      • 레거시 (6)
        • OS (6)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
pfldy2850
LangChain을 활용한 Tool Calling # 2
상단으로

티스토리툴바