文章目錄
- AI(學習筆記第三課) 使用langchain進行AI開發(2)
- 學習內容:
- 1. 返回結構化數據(structured_output pydantic)
- 1.1 使用背景
- 1.2 返回結構化數據示例代碼(pydantic)
- 1.3 執行測試代碼
- 2 返回結構化數據(json)
- 2.1 示例代碼
- 2.2 執行結果
- 3 給提供一些例子(few shot prompting)
- 3.1 示例代碼
- 4 模型綁定工具(Tool Calling)
- 4.1 Tool Calling是什么
- 4.2 Tool Calling實例代碼
- 4.3 Tool Calling實現階段
- 4.3.1 提前綁定階段
- 4.3.2 Tool calling調用階段
- 4.4 Tool calling示例
- 4.4.1 Tool calling示例代碼
- 4.4.2 Tool calling示例代碼執行
- 5 返回結構化回答(使用method)
- 5.1 使用method結構代碼
- 5.2 實行結果
- 6 返回結構化回答(使用include_raw)
AI(學習筆記第三課) 使用langchain進行AI開發(2)
- 使用
langchain
,返回結構化數據
學習內容:
- 使用
langchain
,返回結構化數據(pydantic) - 使用
langchain
,返回結構化數據(json) - 提供一些示例
few shot prompting
- 模型綁定工具
Tool Calling
- 使用
langchain
,返回結構化數據(method) - 使用
langchain
,返回結構化數據(include raw)
1. 返回結構化數據(structured_output pydantic)
1.1 使用背景
一般的AI Application
都是希望給LLM
給出的回答,能夠進行解析,所以最好是結構化的結果(structured output
)。
參照langchain
的官方文檔。
structured_output
1.2 返回結構化數據示例代碼(pydantic)
- 使用
deepseek
的官方AI
,不使用自己構造的ollama
- 需要引入
langchain-deepseek
這個包,可以看出langchain
開始對于deepseek
支持了。 - 可以看出,這是使用的是
pydantic
的結構化數據。
from typing import Optional
from langchain_deepseek import ChatDeepSeek
from pydantic import BaseModel, Fieldllm = ChatDeepSeek(model="deepseek-chat", # 模型名稱temperature=0, # 控制生成隨機性(0-1)max_tokens=None, # 最大輸出token數timeout=None, # 超時設置max_retries=2, # 失敗重試次數api_key="your own deepseek api key"
)class Joke(BaseModel):"""Joke to tell user."""setup: str = Field(description="The setup of the joke")punchline: str = Field(description="The punchline to the joke")rating: Optional[int] = Field(default=None, description="How funny the joke is, from 1 to 10")
structured_llm = llm.with_structured_output(Joke)
print(structured_llm.invoke("Tell me a joke about cats"))
1.3 執行測試代碼
setup="Why don't cats play poker in the jungle?" punchline='Too many cheetahs!' rating=7
結果已經是結構化的數據了。
2 返回結構化數據(json)
2.1 示例代碼
除了pydantic
格式之外,也可以是數據的json
from langchain_deepseek import ChatDeepSeek
from typing import Optional
from typing_extensions import Annotated, TypedDict
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)llm = ChatDeepSeek(model="deepseek-chat", # 模型名稱temperature=0, # 控制生成隨機性(0-1)max_tokens=None, # 最大輸出token數timeout=None, # 超時設置max_retries=2, # 失敗重試次數api_key=