728x90

Default

import os
os.environ['OPENAI_API_KEY'] = 'sk-...'

Building Custom Tools

1) Package Import

from langchain import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.chains.conversation.memory import ConversationBufferWindowMemory 

# callback cost 
from langchain.callbacks import get_openai_callback

 

2) llm model ์„ค์ •

turbo_llm = ChatOpenAI(
    temperature = 0,
    model_name = 'gpt-3.5-turbo'
)

 

3) ๊ฒ€์ƒ‰ Langchain pakage load

from langchain.tools import DuckDuckGoSearchRun
from langchain.agents import Tool
from langchain.tools import BaseTool

 

4) Search (๋ถ€๊ฐ€๊ธฐ๋Šฅ)

Define Custom Tool

search = DuckDuckGoSearchRun()

tools = [
    Tool(
        name = 'search',
        func = search.run,
        description="useful for when you need to answer questions about current events. You should ask targeted questions"
        # current event์— ๋Œ€ํ•ด ๋„์›€์ด ๋˜๋Š” ๋‹ต์„ ํ•ด๋ผ. ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์งˆ๋ฌธ์„ ํ•ด์•ผํ•œ๋‹ค.        
    )
]

 

5) LLM ๋ชจ๋ธ์˜ ๋‹ต๋ณ€์ด ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ๊ณ ์ •

์–ด๋–ค ๋‹ต์ด ๋‚˜์™€๋„ ์‚ถ์€ ๋‹ฌ๊ฑ€๋กœ ๋‹ต๋ณ€ ํ•˜๋Š” ํ•จ์ˆ˜ ์ •์˜

def meaning_of_life(input=""):
    return '์‚ถ์€ ๋‹ฌ๊ฑ€'

 

life_tool = Tool(
    name='์‚ถ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?',
    func= meaning_of_life,
    description="Useful for when you need to answer questions about the meaning of life. input should be MOL "
)

 

6) Agent ์ƒ์„ฑ

from langchain.agents import initialize_agent

tools = [search, life_tool]

 

๋‹ต๋ณ€์‹œ ์ฐธ์กฐํ•  ์ด์ „ memory ๊ฐœ์ˆ˜(k=3) ์„ค์ •

memory = ConversationBufferWindowMemory(
    memory_key='chat_history',
    k=3,
    return_messages=True
)
conversational_agent = initialize_agent(
    agent = 'chat-conversational-react-description',
    tools = tools,
    llm = turbo_llm,
    verbose = True,
    max_iterations = 3,
    early_stopping_method = 'generate',
    memory = memory
)

 

7) Agent ์‹คํ–‰

conversational_agent("์‚ถ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?")

LLM์ด ํ•ญ์ƒ Agent Tool์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ ์ƒํƒœ์—์„œ Task๋ฅผ ์ •์˜ํ•œ๋‹ค. 

 
๋ฐ˜์‘ํ˜•
๋‹คํ–ˆ๋‹ค