中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Langchain集成管理prompt功能的方法是什么

發布時間:2023-05-10 14:58:07 來源:億速云 閱讀:134 作者:iii 欄目:開發技術

本篇內容介紹了“Langchain集成管理prompt功能的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    LangChain是什么 如何使用

    經過了chatGPT,大家都知道了prompt-based learning,也明白了prompt在生成式模型的重要性。假設問答任務要用prompt A, 摘要生成任務要用prompt B,那么如何管理不同的prompt呢?
    Langchain主要的功能就是集成管理prompt。

    安裝

    pip install langchain

    一、需要大語言模型

    使用langchain需要使用一個大語言模型。這個模型可以用openai的gpt-turbo-3.5,也可以用Hugging face hub里面的大模型。
    用這些大模型就需要調用他們的api,所以就要去這些網站生成相應的token。

    二、LangChain的模塊

    LangChain提供了許多模塊,可以用于構建語言模型應用程序。這些模塊可以組合在一起創建更復雜的應用程序,也可以單獨用于簡單的應用程序。

    LangChain主要有以下模塊

    1. LLM:從語言模型中輸出預測結果

    • 例子:基于公司產品生成公司名稱

    # 導入LLM包裝器。
    from langchain.llms import OpenAI
    # 初始化包裝器,temperature越高結果越隨機
    llm = OpenAI(temperature=0.9)
    # 進行調用
    text = "What would be a good company name for a company that makes colorful socks?"
    print(llm(text))

    2. Prompt Templates: 管理LLMs的Prompts

    一般來說我們不會直接把輸入給模型,而是將輸入和一些別的句子連在一起,形成prompts之后給模型。
    例如之前根據產品取名的用例,在實際服務中我們可能只想輸入"socks",那么"What would be a good company name for a company that makes"就是我們的template。

    from langchain.prompts import PromptTemplate
    prompt = PromptTemplate(
        input_variables=["product"],
        template="What is a good name for a company that makes {product}?",
    )

    那么,對于模型來說,真正的輸入就是

    print(prompt.format(product="colorful socks"))
    What is a good name for a company that makes colorful socks?

    3. Chains:將LLMs和prompts結合起來

    很容易想到,我們的模型有很多,prompts也有很多,那么需要把他們組裝起來,這就是Chains做的事情。
    一個Chain包含一個Template和一個模型。例如LLMChain,就包含一個PromptTemplate和一個LLM。
    這樣我們的例子就可以

    from langchain.prompts import PromptTemplate
    from langchain.llms import OpenAI
    llm = OpenAI(temperature=0.9)
    prompt = PromptTemplate(
        input_variables=["product"],
        template="What is a good name for a company that makes {product}?",
    )

    我們可以創建一個LLMChain,然后將llm和prompt給chain。

    from langchain.chains import LLMChain
    chain = LLMChain(llm=llm, prompt=prompt)

    然后可以運行這個chain

    chain.run("colorful socks")
    Socktastic!'

    4. Agents:基于用戶輸入動態地調用chains

    關于Agents,需要理解以下的概念:

    • Tool:輸入是一個string,輸出是一個string,作用是做某個特定任務。這個任務可以是做搜索、查數據庫或者Python REPL.

    • LLM:語言模型

    • Agent:要使用的代理。這應該是一個字符串,引用一個支持代理類。這里就是調用其他服務的API。

    這里有一個例子。假設想知道Taylor Swift的男友是誰,并且求出他的年齡的3次方。

    from langchain.agents import laod_tools
    from langchain.agents import initialize_agent
    from langchain.llms import OpenAI
    import os
    os.environ["OPENAI_API_KEY"] = "xxxxxxxx"
    os.environ["SERPAPI_API_KEY"] ="yyyyyyyy"
    # 導入llm模型
    llm = OpenAI(temperature=0)
    # 導入一些tools,這里倒入serpapi和llm-math
    # SerpApi是一個付費提供搜索結果API的第三方服務提供商。它允許用戶通過簡單的API調用訪問各種搜索引擎的搜索結果,包括Google、Bing、Yahoo、Yandex等。
    # llm-math是langchain里面的能做數學計算的模塊
    tools = load_tools(["serpapi", "llm-math"], llm=llm)
    # 初始化tools,models 和使用的agent
    agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
    # 輸出結果
    agent.run("Who isTaylor's boyfriend? What is his current age raised to the 3 power?")

    輸出

    > Entering new AgentExecutor chain...
     I need to find out who Taylor Swift's boyfriend is and then calculate his age raised to the 3 power.
    Action: Search
    Action Input: "Taylor Swift boyfriend"
    Observation: Taylor Swift's romance with actor Joe Alwyn is her most serious yet secretive to date. Since 2016, their famously private relationship has ...
    Thought: I need to find out Joe Alwyn's age.
    Action: Search
    Action Input: "Joe Alwyn age"
    Observation: 32 years
    Thought: I need to calculate 32 raised to the 3 power.
    Action: Calculator
    Action Input: 32^3
    Observation: Answer: 32768
    Thought: I now know the final answer.
    Final Answer: Taylor Swift's boyfriend is Joe Alwyn and his current age raised to the 3 power is 32768.

    分析這個輸出可以知道,它的思路很清晰。
    它的動作包括:

    • 讀題:Thought(理解題意)

    • 執行:Action(做什么)、Action Input(輸入是什么)、Observation(輸出是什么)

    • 總結:Final Answer(最終輸出)

    每一個輸出之后緊跟著一個Thought,思考下一步做什么,如果發現任務全部完成就輸出最終答案。

    5. Memory

    如果想做一個聊天機器人,那么要求機器人有短暫的記憶,記住對話的歷史。
    Langchain的ConversationChain就提供這樣一個功能。

    默認情況下,ConversationChain具有一種簡單類型的內存,它會記住所有先前的輸入/輸出并將它們添加到傳遞的上下文中。

    # ConversationChain用法
    from langchain import OpenAI, ConversationChain
    llm = OpenAI(temperature=0)
    conversation = ConversationChain(llm=llm, verbose=True) # (將verbose設置為True,以便我們可以看到提示)
    conversation.predict(input="Hi there!")

    輸出

    > Entering new chain...
    Prompt after formatting:
    The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.

    Current conversation:

    Human: Hi there!
    AI:

    > Finished chain.
    ' Hello! How are you today?

    遇到的錯誤

    • ImportError: cannot import name 'load_tools' from 'langchain.agents'
      我用的是python3.7,然后將python版本升級到了3.9就解決了。

    “Langchain集成管理prompt功能的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    礼泉县| 乳山市| 安多县| 宝山区| 唐河县| 榆树市| 精河县| 凤台县| 潼关县| 饶河县| 建始县| 山西省| 怀集县| 九龙城区| 东丰县| 湘阴县| 高陵县| 清徐县| 抚顺县| 金门县| 平阳县| 咸丰县| 桦南县| 永济市| 天津市| 水富县| 孝感市| 德安县| 朔州市| 渝中区| 越西县| 延川县| 南昌县| 都安| 砚山县| 望江县| 尉犁县| 石柱| 无锡市| 西畴县| 海丰县|