亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python?langchain?ReAct?使用范例詳解

 更新時間:2024年12月21日 16:12:12   作者:愛學(xué)習(xí)的小道長  
這篇文章主要介紹了Python?langchain?ReAct?使用范例,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

0. 介紹

ReAct: Reasoning + Acting ,ReAct Prompt 由 few-shot task-solving trajectories 組成,包括人工編寫的文本推理過程和動作,以及對動作的環(huán)境觀察。

1. 范例

langchain version 0.3.7

$ pip show langchain
Name: langchain
Version: 0.3.7
Summary: Building applications with LLMs through composability
Home-page: https://github.com/langchain-ai/langchain
Author: 
Author-email: 
License: MIT
Location: /home/xjg/.conda/envs/langchain/lib/python3.10/site-packages
Requires: aiohttp, async-timeout, langchain-core, langchain-text-splitters, langsmith, numpy, pydantic, PyYAML, requests, SQLAlchemy, tenacity
Required-by: langchain-community

1.1 使用第三方工具

Google 搜索對接
第三方平臺:https://serpapi.com
LangChain API 封裝:SerpAPI

1.1.1 簡單使用工具

from langchain_community.utilities import SerpAPIWrapper
import os
# 刪除all_proxy環(huán)境變量
if 'all_proxy' in os.environ:
    del os.environ['all_proxy']
# 刪除ALL_PROXY環(huán)境變量
if 'ALL_PROXY' in os.environ:
    del os.environ['ALL_PROXY']
os.environ["SERPAPI_API_KEY"] = "xxx"
params = {
    "engine": "bing",
    "gl": "us",
    "hl": "en",
}
search = SerpAPIWrapper(params=params)
result = search.run("Obama's first name?")
print(result)

輸出結(jié)果:

['In 1975, when Obama started high school in Hawaii, teacher Eric Kusunoki read the roll call and stumbled on Obama\'s first name. "Is Barack here?" he asked, pronouncing it BAR-rack .', "Barack Obama, the 44th president of the United States, was born on August 4, 1961, in Honolulu, Hawaii to Barack Obama, Sr. (1936–1982) (born in Oriang' Kogelo of Rachuonyo North District, Kenya) and Stanley Ann Dunham, known as Ann (1942–1995) (born in Wichita, Kansas, United States). Obama spent most of his childhood years in Honolulu, where his mother attended the University of Hawai?i at Mānoa", 'Barack Obama is named after his father, who was a Kenyan economist (called under the same name). He’s first real given name is “Barak”, also spelled Baraq (Not to be confused with Barack which is is a building or group of buildings …', 'Nevertheless, he was proud enough of his formal name that after he and Ann Dunham married in 1961, they named their son, Barack Hussein Obama II. As a youngster, the former president likely never...', 'https://www.britannica.com/biography/Barack-Obama', 'The name Barack means "one who is blessed" in Swahili. Obama was the first African-American U.S. president. Obama was the first president born outside of the contiguous United States. Obama was the eighth left-handed …', 'Barack Obama is the first Black president of the United States. Learn facts about him: his age, height, leadership legacy, quotes, family, and more.', 'Barack and Ann’s son, Barack Hussein Obama Jr., was born in Honolulu on August 4, 1961. Did you know? Not only was Obama the first African American president, he was also the first to be...', "President Obama's full name is Barack Hussein Obama. His full, birth name is Barack Hussein Obama, II. He was named after his father, Barack Hussein Obama, Sr., who …", 'When Barack Obama was elected president in 2008, he became the first African American to hold the office. The framers of the Constitution always hoped that our leadership would not be limited...']

1.1.2 使用第三方工具時ReAct

提示詞 hwchase17/self-ask-with-search

from langchain_community.utilities import SerpAPIWrapper
from langchain.agents import create_self_ask_with_search_agent, AgentType,Tool,AgentExecutor
from langchain import hub
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv, find_dotenv
# 刪除all_proxy環(huán)境變量
if 'all_proxy' in os.environ:
    del os.environ['all_proxy']
# 刪除ALL_PROXY環(huán)境變量
if 'ALL_PROXY' in os.environ:
    del os.environ['ALL_PROXY']
_ = load_dotenv(find_dotenv())
os.environ["SERPAPI_API_KEY"] = "xxx"
chat_model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# 實例化查詢工具
search = SerpAPIWrapper()
tools = [
    Tool(
        name="Intermediate Answer",
        func=search.run,
        description="useful for when you need to ask with search",
    )
]
prompt = hub.pull("hwchase17/self-ask-with-search")
self_ask_with_search = create_self_ask_with_search_agent(
     chat_model,tools,prompt
)
agent_executor = AgentExecutor(agent=self_ask_with_search, tools=tools,verbose=True,handle_parsing_errors=True)
reponse = agent_executor.invoke({"input": "成都舉辦的大運會是第幾屆大運會?2023年大運會舉辦地在哪里?"})
print(reponse)
print(chat_model.invoke("成都舉辦的大運會是第幾屆大運會?").content)
print(chat_model.invoke("2023年大運會舉辦地在哪里?").content)

輸出:

> Entering new AgentExecutor chain...
Could not parse output: Yes.  
Follow up: 成都舉辦的大運會是由哪個組織舉辦的?  

1. **成都舉辦的大運會是第幾屆大運會?**
   - The 2023 Chengdu Universiade was the 31st Summer Universiade.

2. **2023年大運會舉辦地在哪里?**
   - The 2023 Summer Universiade was held in Chengdu, China.

So the final answers are:
- 成都舉辦的大運會是第31屆大運會。
- 2023年大運會舉辦地是成都,China。

如果你還有其他問題或需要進(jìn)一步的澄清,請隨時問我!
For troubleshooting, visit: https://python.langchain.com/docs/troubleshooting/errors/OUTPUT_PARSING_FAILUREInvalid or incomplete response

> Finished chain.
{'input': '成都舉辦的大運會是第幾屆大運會?2023年大運會舉辦地在哪里?', 'output': '31屆,成都,China'}
成都舉辦的世界大學(xué)生運動會是第31屆大運會。該屆大運會于2023年在中國成都舉行。
2023年大運會(世界大學(xué)生運動會)將于2023年在中國成都舉辦。

1.2 使用langchain內(nèi)置的工具

hwchase17/react

from langchain.agents import create_react_agent, AgentType,Tool,AgentExecutor
from langchain import hub
from langchain_community.agent_toolkits.load_tools import load_tools
from langchain.prompts import PromptTemplate
from dotenv import load_dotenv, find_dotenv
from langchain_openai import ChatOpenAI
import os
# 刪除all_proxy環(huán)境變量
if 'all_proxy' in os.environ:
    del os.environ['all_proxy']
# 刪除ALL_PROXY環(huán)境變量
if 'ALL_PROXY' in os.environ:
    del os.environ['ALL_PROXY']
_ = load_dotenv(find_dotenv())
os.environ["SERPAPI_API_KEY"] = "xxx"
chat_model = ChatOpenAI(model="gpt-4o-mini", temperature=0)
prompt = hub.pull("hwchase17/react")
tools = load_tools(["serpapi", "llm-math"], llm=chat_model)
agent = create_react_agent(chat_model, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools,verbose=True)
reponse =agent_executor.invoke({"input": "誰是萊昂納多·迪卡普里奧的女朋友?她現(xiàn)在年齡的0.43次方是多少?"})
print(reponse)

輸出:

> Entering new AgentExecutor chain...
我需要先找到萊昂納多·迪卡普里奧目前的女朋友是誰,然后獲取她的年齡以計算年齡的0.43次方。  
Action: Search  
Action Input: "Leonardo DiCaprio girlfriend 2023"  
Vittoria Ceretti我找到萊昂納多·迪卡普里奧的女朋友是維多利亞·切雷提(Vittoria Ceretti)。接下來,我需要找到她的年齡以計算0.43次方。  
Action: Search  
Action Input: "Vittoria Ceretti age 2023"  

About 25 years維多利亞·切雷提(Vittoria Ceretti)大約25歲。接下來,我將計算25的0.43次方。  
Action: Calculator  
Action Input: 25 ** 0.43  

Answer: 3.991298452658078我現(xiàn)在知道最終答案  
Final Answer: 萊昂納多·迪卡普里奧的女朋友是維多利亞·切雷提,她的年齡0.43次方約為3.99。

> Finished chain.
{'input': '誰是萊昂納多·迪卡普里奧的女朋友?她現(xiàn)在年齡的0.43次方是多少?', 'output': '萊昂納多·迪卡普里奧的女朋友是維多利亞·切雷提,她的年齡0.43次方約為3.99。'}

1.3 使用自定義的工具

hwchase17/openai-functions-agent

1.3.1 簡單使用

from langchain_openai import ChatOpenAI
from  langchain.agents import tool,AgentExecutor,create_openai_functions_agent
from langchain import hub
import os
from dotenv import load_dotenv, find_dotenv
# 刪除all_proxy環(huán)境變量
if 'all_proxy' in os.environ:
    del os.environ['all_proxy']
# 刪除ALL_PROXY環(huán)境變量
if 'ALL_PROXY' in os.environ:
    del os.environ['ALL_PROXY']
_ = load_dotenv(find_dotenv())
chat_model = ChatOpenAI(model="gpt-4o-mini",temperature=0)
@tool
def get_word_length(word: str) -> int:
    """Returns the length of a word."""
    return len(word)
tools = [get_word_length]
prompt = hub.pull("hwchase17/openai-functions-agent")
agent = create_openai_functions_agent(llm=chat_model, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True,handle_parsing_errors=True)
agent_executor.invoke({"input": "單詞“educati”中有多少個字母?"})

輸出:

> Entering new AgentExecutor chain...

Invoking: `get_word_length` with `{'word': 'educati'}`

7單詞“educati”中有7個字母。

> Finished chain.

1.3.1 帶有記憶功能

from langchain_openai import ChatOpenAI
from  langchain.agents import tool,AgentExecutor,create_openai_functions_agent
from langchain_core.prompts.chat import ChatPromptTemplate
from langchain.prompts import MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
from langchain import hub
import os
from dotenv import load_dotenv, find_dotenv
# 刪除all_proxy環(huán)境變量
if 'all_proxy' in os.environ:
    del os.environ['all_proxy']
# 刪除ALL_PROXY環(huán)境變量
if 'ALL_PROXY' in os.environ:
    del os.environ['ALL_PROXY']
_ = load_dotenv(find_dotenv())
chat_model = ChatOpenAI(model="gpt-4o-mini",temperature=0)
@tool
def get_word_length(word: str) -> int:
    """Returns the length of a word."""
    return len(word)
tools = [get_word_length]
prompt = ChatPromptTemplate.from_messages(
    [
        ("placeholder", "{chat_history}"),
        ("human", "{input}"),
        ("placeholder", "{agent_scratchpad}"),
    ]
)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
agent = create_openai_functions_agent(llm=chat_model, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True)
agent_executor.invoke({"input":"單詞“educati”中有多少個字母?"})
agent_executor.invoke({"input":"那是一個真實的單詞嗎?"})

輸出:

> Entering new AgentExecutor chain...

Invoking: `get_word_length` with `{'word': 'educati'}`

7

單詞“educati”中有7個字母。

> Finished chain.

> Entering new AgentExecutor chain...
“educati”并不是一個標(biāo)準(zhǔn)的英語單詞。它可能是“education”的一個變形或拼寫錯誤。標(biāo)準(zhǔn)英語中的相關(guān)詞是“education”,意為“教育”。

> Finished chain.

2. 參考

LangChain Hub https://smith.langchain.com/hub/
LangChain https://python.langchain.com/docs/introduction/
DevAGI開放平臺 https://devcto.com/

到此這篇關(guān)于Python langchain ReAct 使用范例的文章就介紹到這了,更多相關(guān)Python langchain ReAct 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解讀dataframe中有關(guān)inf的處理技巧

    解讀dataframe中有關(guān)inf的處理技巧

    這篇文章主要介紹了解讀dataframe中有關(guān)inf的處理技巧,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python ckeditor富文本編輯器代碼實例解析

    Python ckeditor富文本編輯器代碼實例解析

    這篇文章主要介紹了Python ckeditor富文本編輯器代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • python:刪除離群值操作(每一行為一類數(shù)據(jù))

    python:刪除離群值操作(每一行為一類數(shù)據(jù))

    這篇文章主要介紹了python:刪除離群值操作(每一行為一類數(shù)據(jù)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn)

    python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn)

    本文主要介紹了python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 詳解python UDP 編程

    詳解python UDP 編程

    這篇文章主要介紹了python UDP 編程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • python實現(xiàn)一個搖骰子小游戲

    python實現(xiàn)一個搖骰子小游戲

    大家好,本篇文章主要講的是python實現(xiàn)一個搖骰子小游戲,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python設(shè)計模式中的結(jié)構(gòu)型橋接模式

    Python設(shè)計模式中的結(jié)構(gòu)型橋接模式

    這篇文章主要介紹了Python設(shè)計模式中的結(jié)構(gòu)型橋接模式,橋接模式即Bridge?Pattern,將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化.下面來看看文章的詳細(xì)內(nèi)容介紹吧
    2022-02-02
  • python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法

    python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法

    今天小編就為大家分享一篇python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python實現(xiàn)計算信息熵的示例代碼

    Python實現(xiàn)計算信息熵的示例代碼

    信息熵(information?entropy)是信息論的基本概念。描述信息源各可能事件發(fā)生的不確定性。本文將通過Python實現(xiàn)信息熵的計算,感興趣的可以了解一下
    2022-12-12
  • Pytorch中TensorDataset,DataLoader的聯(lián)合使用方式

    Pytorch中TensorDataset,DataLoader的聯(lián)合使用方式

    這篇文章主要介紹了Pytorch中TensorDataset,DataLoader的聯(lián)合使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論