ReAct

โครงการ AutoGPT ที่มีชื่อเสียงเป็นพื้นฐานบนโมเดล ReAct ซึ่งเป็นการรวมกันของ การคิดเชิงตรรกะ + การดำเนินการ โมเดลขนาดใหญ่ LLM รับผิดชอบในการคิดเชิงตรรกะ การควบคุมการดำเนินการเพื่อบรรลุเป้าหมาย สำหรับนักพัฒนา การดำเนินการจริงๆ ก็คือการพัฒนาเครื่องมือหรือ API ที่ดี บทนี้จะแนะนำถึงวิธีที่ LangChain นำ ReAct มาใช้งาน

ReAct

โหลดแพคเกจพื้นฐาน:

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain_openai import OpenAI

ที่นี่เราใช้โมเดล OpenAI:

llm = OpenAI(temperature=0)

โหลดเครื่องมือสองตัวที่มีใน LangChain: serpapi สำหรับการค้นหาใน Google และ llm-math สำหรับเครื่องคิดคำนวณทางคณิตศาสตร์ ทั้งคู่ถูกนำมาปฏิบัติโดยใช้ LLM ดังนั้นเมื่อโหลดเครื่องมือ ควรส่ง llm โมเดลที่จะใช้เข้าไปด้วย

tools = load_tools(["serpapi", "llm-math"], llm=llm)

สุดท้าย กำหนดเอเจนต์เริ่มต้นด้วยชนิดของเอเจนต์เป็น AgentType.ZERO_SHOT_REACT_DESCRIPTION แทนโมเดล ReAct

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

ตอนนี้ลองมาทดสอบกัน!

agent.run("ใครคือแฟนสาวของ Leonardo DiCaprio? อายุปัจจุบันของเธอยกกำลัง 0.43 เท่า?")
> เริ่มการดำเนินการของเอเจนต์ใหม่...
     ฉันต้องหาว่าใครคือแฟนสาวของ Leonardo DiCaprio และหลังจากนั้นคำนวณอายุของเธอยกกำลัง 0.43
    การดำเนินการ: ค้นหา
    ข้อมูลที่ใช้ในการดำเนินการ: "Leonardo DiCaprio แฟนสาว"
    การสังเกต: Camila Morrone
    คิด: ฉันต้องหาว่าอายุของ Camila Morrone เท่าไหร่
    การดำเนินการ: ค้นหา
    ข้อมูลที่ใช้ในการดำเนินการ: "Camila Morrone อายุ"
    การสังเกต: 25 ปี
    คิด: ฉันต้องคำนวณ 25 ยกกำลัง 0.43
    การดำเนินการ: เครื่องคิดเลข
    ข้อมูลที่ใช้ในการดำเนินการ: 25^0.43
    การสังเกต: คำตอบ: 3.991298452658078

    คิด: ฉันรู้คำตอบสุดท้ายแล้ว
    คำตอบสุดท้าย: Camila Morrone เป็นแฟนสาวของ Leonardo DiCaprio และอายุของเธอยกกำลัง 0.43 เท่ากับ 3.991298452658078.

    > การดำเนินการเสร็จสิ้นแล้ว.

    "Camila Morrone เป็นแฟนสาวของ Leonardo DiCaprio และอายุของเธอยกกำลัง 0.43 เท่ากับ 3.991298452658078."

การใช้โมเดลแชท

จากตัวอย่างก่อนหน้า เราทราบว่าเอเจนต์ต้องเลือกโมเดลขนาดใหญ่เป็นเครื่องยนต์ในการคิดเชิงตรรกะ ที่นี่เราเปลี่ยนมาใช้โมเดลแชทจาก OpenAI แทน

from langchain_openai import ChatOpenAI

chat_model = ChatOpenAI(temperature=0)
agent = initialize_agent(tools, chat_model, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("ใครคือแฟนสาวของ Leonardo DiCaprio? อายุปัจจุบันของเธอยกกำลัง 0.43 เท่า?")