AI Agent白手起家26: 使用標準事件驅(qū)動大模型實踐
綱要練習目標掌握大模型標準事件的調(diào)用回顧 LangChain 中的核心標準事件invokestreambatchastream_eventswith_structured_output環(huán)境準備實戰(zhàn)代碼多種事件調(diào)用對比同步調(diào)用與流式輸出批量處理異步事件流監(jiān)聽結(jié)構(gòu)化輸出運行說明與預(yù)期結(jié)果總結(jié)與擴展建議練習目標在學(xué)習完大模型組件的理論知識后動手實踐是鞏固的最佳途徑。本次練習的目標是使用任意已申請到的大模型資源無論來自 OpenAI、DeepSeek、Anthropic 等云端 API還是通過 Ollama 運行的本地模型通過 LangChain 的標準事件接口來驅(qū)動模型實際感受不同調(diào)用方式的行為差異。你將學(xué)會如何優(yōu)雅地切換同步調(diào)用、流式輸出、批量處理、異步事件流以及結(jié)構(gòu)化輸出為后續(xù)開發(fā) AI Agent 打下堅實基礎(chǔ)。核心標準事件回顧LangChain 對大模型組件抽象了統(tǒng)一的調(diào)用接口下表對比了最常用的五種事件事件調(diào)用方式適用場景返回類型invoke同步阻塞返回完整結(jié)果后臺任務(wù)、批處理腳本AIMessagestream同步迭代逐 token 產(chǎn)出聊天機器人前端、實時反饋Iterator[chunk]batch并發(fā)發(fā)送多個請求批量評估、數(shù)據(jù)增強list[AIMessage]astream_events異步流式按事件類型精細控制需要監(jiān)聽開始/結(jié)束/流式進度AsyncIterator[event]with_structured_output基于 Pydantic 模型的結(jié)構(gòu)化輸出下游系統(tǒng)對接、JSON 解析Pydantic 實例下面的流程圖展示了從調(diào)用到輸出的決策路徑否否是是否是開始調(diào)用需要流式?需要結(jié)構(gòu)化輸出?使用 invoke使用 with_structured_output invoke需要異步事件?使用 stream使用 astream_events返回完整 AIMessage逐 chunk 輸出按事件回調(diào)環(huán)境準備本示例使用 OpenAI 的 GPT-3.5-turbo 模型成本較低適合練習。請先安裝依賴并設(shè)置 API 密鑰。pipinstalllangchain-openai pydantic確保環(huán)境變量OPENAI_API_KEY已設(shè)置為你的有效密鑰。若使用本地模型如 Ollama可將ChatOpenAI替換為ChatOllama并修改base_url即可。實戰(zhàn)代碼一次演示所有事件以下代碼將連續(xù)演示invoke、stream、batch、astream_events和with_structured_output五種調(diào)用方式。importos,asynciofrompydanticimportBaseModel,Fieldfromlangchain_openaiimportChatOpenAI# ---------- 初始化模型 ----------llmChatOpenAI(modelgpt-3.5-turbo,temperature0.7,api_keyos.getenv(OPENAI_API_KEY),)# ---------- 1. invoke同步調(diào)用 ----------print( 1. invoke 同步調(diào)用 )responsellm.invoke(用一句話介紹 Python 語言)print(完整回答:,response.content)print(Token 用量:,response.usage_metadata)print()# ---------- 2. stream流式輸出 ----------print( 2. stream 流式輸出 )print(模型輸出: ,end,flushTrue)forchunkinllm.stream(寫一首關(guān)于編程的七言絕句):print(chunk.content,end,flushTrue)print(\n)# ---------- 3. batch批量處理 ----------print( 3. batch 批量處理 )questions[什么是上下文窗口,Token 是什么,工具調(diào)用有什么作用]resultsllm.batch(questions)forq,rinzip(questions,results):print(fQ:{q}\nA:{r.content}\n)# ---------- 4. astream_events異步事件流 ----------asyncdefdemo_astream_events():print( 4. astream_events 異步事件流 )asyncforeventinllm.astream_events(解釋什么是深度學(xué)習,versionv2):kindevent[event]ifkindon_chat_model_start:print([模型開始響應(yīng)])elifkindon_chat_model_stream:dataevent[data][chunk]ifdata.content:print(data.content,end,flushTrue)elifkindon_chat_model_end:print(\n[模型響應(yīng)結(jié)束])outputevent[data][output]ifoutput.usage_metadata:print(Token 用量:,output.usage_metadata)asyncio.run(demo_astream_events())print()# ---------- 5. with_structured_output結(jié)構(gòu)化輸出 ----------print( 5. with_structured_output 結(jié)構(gòu)化輸出 )classProgrammingJoke(BaseModel):程序員笑話setup:strField(description笑話的鋪墊)punchline:strField(description笑話的包袱/笑點)rating:int|NoneField(defaultNone,description好笑程度 1-10)structured_llmllm.with_structured_output(ProgrammingJoke)jokestructured_llm.invoke(給我講一個編程相關(guān)的笑話)print(f鋪墊:{joke.setup})print(f笑點:{joke.punchline})print(f評分:{joke.rating})將以上代碼保存為practice.py運行后你將直觀看到每種事件的特點invoke等待完整回復(fù)后一次性打印。stream逐字出現(xiàn)模擬打字機效果。batch同時發(fā)送三個問題按列表順序返回答案。astream_events在流式輸出的前后觸發(fā)了開始和結(jié)束事件并報告了 Token 用量。with_structured_output返回了一個可直接讀屬性的 Pydantic 對象無需手動解析 JSON。擴展建議嘗試替換模型將ChatOpenAI改為ChatAnthropic需要langchain-anthropic或ChatOllama看看事件支持是否一致。為batch處理加入進度條使用tqdm提升批處理體驗。在astream_events中捕獲更多事件類型如on_chat_model_stream的詳細元數(shù)據(jù)實現(xiàn)自定義日志記錄。結(jié)合之前學(xué)習的工具調(diào)用bind_tools在stream模式下處理工具請求構(gòu)建更真實的 Agent 交互。動手練習是內(nèi)化知識的最佳方式嘗試修改代碼、切換模型、觀察輸出差異你會對大模型的標準事件有更深刻的理解。

相關(guān)新聞

福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

通訊作者:萬宇馳、張久俊、呂瑞濤通訊單位:福州大學(xué) 、清華大學(xué)DOI:https://doi.org/10.1002/adfm.76112核心導(dǎo)讀:本文提出"分步升級"廢硝酸鹽處理新路線——利用廢水中的金屬離子經(jīng)快速焦耳熱(40V&#xff…

2026/8/4 0:01:30 閱讀更多
貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

研究背景質(zhì)子交換膜燃料電池(PEMFCs)因其高能量轉(zhuǎn)換效率和清潔零排放特性備受關(guān)注,然而陰極氧還原反應(yīng)(ORR)動力學(xué)遲緩、鉑催化劑成本高昂且耐久性不足的問題嚴重制約了其商業(yè)化進程。將 Pt 與 3d 過渡金屬合金化可調(diào)控…

2026/8/4 0:01:30 閱讀更多
制造業(yè)電子合同實踐:從采購下單到交付驗收的全鏈路數(shù)字化簽約方案

制造業(yè)電子合同實踐:從采購下單到交付驗收的全鏈路數(shù)字化簽約方案

制造業(yè)可能是電子合同滲透率增長最快的行業(yè)之一。 這個判斷基于一個簡單的事實:制造業(yè)的合同場景極其復(fù)雜。一家中等規(guī)模的制造企業(yè),一年要處理的合同類型可能超過50種——原材料采購合同、設(shè)備采購合同、加工承攬合同、物流運輸合同、倉儲合同、銷售合同…

2026/8/4 0:52:04 閱讀更多
三大論文AI工具怎么選?Gradpaper、筆墨AI、DeepSeek場景化對比。

三大論文AI工具怎么選?Gradpaper、筆墨AI、DeepSeek場景化對比。

很多同學(xué)糾結(jié)論文寫作工具如何取舍,核心誤區(qū)是將通用大模型與垂直學(xué)術(shù)工具混為一談。簡單區(qū)分:DeepSeek是通用思維型大模型,擅長思考、推導(dǎo)、梳理科研邏輯;Gradpaper、筆墨AI是論文落地型工具,專注寫作、過檢、排版、合…

2026/8/4 0:52:04 閱讀更多
論文AI工具深度測評:Gradpaper、筆墨AI,誰才是論文寫作天花板。

論文AI工具深度測評:Gradpaper、筆墨AI,誰才是論文寫作天花板。

先點明核心差異:DeepSeek屬于通用全能大模型,主打科研思路梳理、論文框架搭建、理工科公式與代碼邏輯推導(dǎo);Gradpaper、筆墨AI是垂直學(xué)術(shù)專屬寫作平臺,聚焦論文初稿撰寫、查重降重、AIGC痕跡消除、格式排版、學(xué)術(shù)合規(guī)定稿&#xff…

2026/8/4 0:52:04 閱讀更多
電子勞動合同在勞動仲裁中的證據(jù)采信標準:基于近兩年司法判例的實證分析

電子勞動合同在勞動仲裁中的證據(jù)采信標準:基于近兩年司法判例的實證分析

電子勞動合同的法律效力,在《電子簽名法》和《民法典》中都有明確規(guī)定——可靠的電子簽名與手寫簽名或蓋章具有同等法律效力,數(shù)據(jù)電文被明確列為書面合同形式。 法律層面的確認已經(jīng)不存在爭議。但在實際的勞動仲裁和訴訟中,電子勞動合同的證據(jù)…

2026/8/4 0:52:04 閱讀更多
計算機畢業(yè)設(shè)計之基于SpringBoot+Vue的班主任管理系統(tǒng)的設(shè)計與實現(xiàn)

計算機畢業(yè)設(shè)計之基于SpringBoot+Vue的班主任管理系統(tǒng)的設(shè)計與實現(xiàn)

如今,在科學(xué)技術(shù)飛速發(fā)展的情況下,信息化的時代也已因為計算機的出現(xiàn)而來臨,信息化也已經(jīng)影響到了社會上的各個方面。它可以為人們提供許多便利之處,可以大大提高人們的工作效率。隨著計算機技術(shù)的發(fā)展的普及,各個領(lǐng)域…

2026/8/4 0:42:04 閱讀更多
清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級轉(zhuǎn)化為CeO?-石墨烯電催化劑!

清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級轉(zhuǎn)化為CeO?-石墨烯電催化劑!

通訊作者:鄧兵、劉建國通訊單位:清華大學(xué)DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清潔能源技術(shù)與電子器件不可或缺的核心原料,然而傳統(tǒng)提取方式依賴能耗高、排放大的采礦與強…

2026/8/4 0:01:30 閱讀更多
貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

研究背景質(zhì)子交換膜燃料電池(PEMFCs)因其高能量轉(zhuǎn)換效率和清潔零排放特性備受關(guān)注,然而陰極氧還原反應(yīng)(ORR)動力學(xué)遲緩、鉑催化劑成本高昂且耐久性不足的問題嚴重制約了其商業(yè)化進程。將 Pt 與 3d 過渡金屬合金化可調(diào)控…

2026/8/4 0:01:30 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/3 19:34:52 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設(shè)備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/3 19:34:54 閱讀更多