iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0

上一篇我們實做了zero-shot react description,本篇我們繼續實作其他AgentType!

我們就先來實作上篇有介紹過的Self-Ask with Search,也就是能夠使用搜尋tool去得到外部資料再進行推理的Agent

首先在搜尋工具的選擇上,我選擇SerpApi,這邊先來介紹一下這是什麼

SerpApi

SerpApi就是一個提供了Google以及其他搜尋引擎的搜尋API,並且支援多種形式,像是Google Maps、 Google Image、Youtube等等,再以JSON檔回傳搜尋結果。
我們就能使用這個搜尋API,和LangChain、Agent結合,創造出一個自帶搜尋功能的Agent!

首先我們要先去SerpApi官網註冊一個帳號,並申請到自己的Api Key
free plan都會有一百次搜尋可以使用~
https://ithelp.ithome.com.tw/upload/images/20240927/20160630IA0p6FsPfh.png
然後將Key複製下來,我們在專案中打上

import os
os.environ["SERPAPI_API_KEY"] = "SERPAPIKEY" # 在這邊將你的key複製上來

這樣就將Api Key設置好了!

接著我們一樣先將tool寫出來,這邊有兩種寫法,第一種就是和前一篇一樣,將我們的tool自行創建出來,在func這邊寫上搜尋函數並寫上description

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain_community.chat_models.ollama import ChatOllama
from langchain.utilities import SerpAPIWrapper

# 創建SerpApi工具
search_tool = Tool(
    name="Search",
    func=SerpAPIWrapper().run,
    description="Search for information on the web when you need more context or details."
)

另一種寫法就是用Langchain裡的load_tools這個class,裡面就是有事先集成了很多工具,像是AzureAIService、File Management、GitHub等等,我們要用的SerpApi也在其中,所以我們這邊就可以直接用load tools直接將他載入進來

from langchain.agents import load_tools

search_tool = load_tools(["serpapi"])

這樣就可以直接讓Agent去用了~
他的name、description都已經配置好了不用擔心!都已經配置好了不用擔心!

那接下來我們就將Agent創建出來~

# 初始化AgentExecutor
agent_executor = initialize_agent(
    tools=[search_tool],
    llm=llm,
    agent=AgentType.SELF_ASK_WITH_SEARCH,
    verbose=True
)

# 測試 Agent with 兩個問題
question = "What day is today? Also, what happened on this day in history?"
response = agent_executor.run(question)
print(response)

print出來的結果都正確沒問題的話,
這樣我們就成功作到SELF_ASK_WITH_SEARCH 並且讓Agent with搜尋工具了!
並且verbose有 = true,這邊也可以看到模型詳細搜尋解題的細節!


SerpApi官網


上一篇
<玩轉大語言模型> LangChain: AgentType(Zero-Shot React Description)
下一篇
<玩轉大語言模型> 方便的套皮工具: Streamlit & Gradio
系列文
LangChain、RAG、HuggingFace: 玩轉大語言模型15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言