
LLMLLM 有兩種常見含義?一是?大型語言模型?Large Language Model屬于人工智能領(lǐng)域二是?法學(xué)碩士?Master of Laws屬于留學(xué)教育領(lǐng)域 。大型語言模型是什么?核心定義?LLM 是使用大量文本數(shù)據(jù)訓(xùn)練的深度學(xué)習(xí)模型能生成自然語言文本或理解語言含義 。?技術(shù)特點(diǎn)?基于 Transformer 架構(gòu)采用自注意力機(jī)制處理文本序列。參數(shù)量龐大從數(shù)十億到數(shù)萬億不等訓(xùn)練數(shù)據(jù)來自互聯(lián)網(wǎng)、維基百科等海量資源。能完成問答、翻譯、摘要、代碼生成等多種任務(wù)。?常見模型??GPT 系列?OpenAI 推出GPT-4 支持語言、圖像多模態(tài)。?DeepSeek 系列?中國公司開發(fā)2026 年推出 V4 家族支持 100 萬 token 上下文窗口。?其他主流模型?ClaudeAnthropic、LlamaMeta、GeminiGoogle等。SDD工程SDDSpecification-Driven Development規(guī)格驅(qū)動(dòng)開發(fā)是?AI 時(shí)代以規(guī)格文檔為核心的軟件開發(fā)范式?先定義結(jié)構(gòu)化規(guī)格再由 AI 生成代碼 。???核心理念規(guī)格作為單一真相源人類定義意圖AI 負(fù)責(zé)執(zhí)行。開發(fā)流程需求分析→規(guī)范編寫→評(píng)審→AI 生成代碼→測(cè)試驗(yàn)證。代表工具GitHub spec-kit、Kiro、Tessl 等。與 TDD/BDD 區(qū)別TDD 關(guān)注測(cè)試、BDD 關(guān)注行為SDD 關(guān)注系統(tǒng)級(jí)架構(gòu)契約。???需要我?guī)湍銓?duì)比SDD與TDD/BDD在適用場(chǎng)景上的核心差異嗎可以幫你快速判斷哪種方法更適合你的項(xiàng)目類型。規(guī)范驅(qū)動(dòng)開發(fā)是構(gòu)建嚴(yán)肅應(yīng)用的最佳工作流Markdown規(guī)范用ai寫前端后端和agent開發(fā)區(qū)別是什么用AI寫前端/后端和做Agent開發(fā)核心區(qū)別在于?工作目標(biāo)和代碼邏輯完全不同?前端后端是“接收指令→返回?cái)?shù)據(jù)”Agent開發(fā)是“接收目標(biāo)→自主拆解→調(diào)用工具→完成閉環(huán)→記憶優(yōu)化”。簡(jiǎn)單說AI寫前端后端是?輔助你更快地完成傳統(tǒng)開發(fā)?而Agent開發(fā)是?讓AI自己當(dāng)“員工”去完成任務(wù)?你給它一個(gè)目標(biāo)它自己規(guī)劃步驟、調(diào)用工具、處理反饋直到干完活。 核心區(qū)別AI寫代碼 vs Agent開發(fā)表格維度用AI寫前端/后端Agent開發(fā)?核心目標(biāo)?生成頁面、接口、業(yè)務(wù)邏輯代碼提高開發(fā)效率構(gòu)建一個(gè)能自主決策、執(zhí)行復(fù)雜任務(wù)的智能系統(tǒng)?工作方式?你給指令需求AI生成代碼你來審查和修改你給目標(biāo)Agent自己拆解任務(wù)、調(diào)用工具、根據(jù)結(jié)果調(diào)整下一步?代碼邏輯?傳統(tǒng)項(xiàng)目接收請(qǐng)求→處理→返回?cái)?shù)據(jù)Agent項(xiàng)目接收目標(biāo)→拆解→調(diào)工具→看結(jié)果→再?zèng)Q策→完成?關(guān)鍵模塊?前端頁面交互、后端業(yè)務(wù)邏輯/數(shù)據(jù)決策模型LLM、工具調(diào)用、記憶機(jī)制、狀態(tài)管理?衡量指標(biāo)?代碼質(zhì)量、性能、延遲任務(wù)完成率、決策準(zhǔn)確性、適應(yīng)性 具體場(chǎng)景對(duì)比?1. 傳統(tǒng)前端/后端開發(fā)用AI輔助?比如做一套訂單系統(tǒng)邏輯是固定的用戶下單 → 檢查庫存 → 扣庫存 → 生成訂單 → 調(diào)支付 → 返回結(jié)果。你用AI比如Deepseek、Cursor能快速生成這些代碼但業(yè)務(wù)流程、數(shù)據(jù)表結(jié)構(gòu)、異常處理都是你自己設(shè)計(jì)好的AI只是幫你“敲代碼”。?2. AI應(yīng)用開發(fā)把大模型嵌入產(chǎn)品?比如在APP里加一個(gè)智能客服核心是把大模型的對(duì)話能力接到你的產(chǎn)品里。工作重點(diǎn)在于怎么調(diào)API、怎么處理流式輸出、怎么設(shè)計(jì)Prompt讓應(yīng)用“變聰明”。?3. Agent開發(fā)讓AI自己干活?比如做一個(gè)“自動(dòng)修Bug的Agent”你告訴它“幫我修復(fù)這個(gè)Bug”它會(huì)自己讀取代碼、搜索相關(guān)文件、修改代碼、運(yùn)行測(cè)試。如果測(cè)試失敗它會(huì)讀報(bào)錯(cuò)、重新判斷問題、決定下一步。這個(gè)“決策→行動(dòng)→反饋→再?zèng)Q策”的閉環(huán)就是Agent和普通接口調(diào)用的本質(zhì)區(qū)別。?? 容易踩的坑?會(huì)調(diào)API ≠ 會(huì)做Agent?很多人以為Agent開發(fā)就是調(diào)大模型API加提示詞這是個(gè)很大的誤解。真正的Agent核心是?自主性?——能根據(jù)目標(biāo)自己決定下一步做什么而不是你預(yù)先寫好每一步。?Agent開發(fā)不一定更簡(jiǎn)單?對(duì)干過幾年前后端的老手來說Agent開發(fā)可能只是多調(diào)幾個(gè)API但對(duì)新手來說要搭建整套Agent體系、理解底層算法模型難度不小通常要付出5-6個(gè)月的學(xué)習(xí)時(shí)間。 職業(yè)選擇建議如果你是有經(jīng)驗(yàn)的前后端開發(fā)者轉(zhuǎn)Agent開發(fā)其實(shí)是?最近的路?你懂API設(shè)計(jì)Agent本質(zhì)就是給大模型接工具、懂系統(tǒng)架構(gòu)任務(wù)編排、狀態(tài)管理、并發(fā)控制、懂工程化部署、監(jiān)控、穩(wěn)定性這些都是Agent落地的關(guān)鍵能力。 現(xiàn)在市場(chǎng)對(duì)AI應(yīng)用開發(fā)的需求增長(zhǎng)很快字節(jié)等大廠校招也開始設(shè)“AI Agent開發(fā)”和“AI全棧工程師”崗位了。Agent開發(fā)需要理解閉環(huán)機(jī)制可以看看閉環(huán)具體怎么實(shí)現(xiàn)?或者決策模型選哪個(gè)更好?Agent開發(fā)需要哪些核心技能Agent開發(fā)的核心技能不是零散的API調(diào)用而是一套圍繞?“讓智能體穩(wěn)定完成真實(shí)業(yè)務(wù)閉環(huán)”?構(gòu)建的完整能力體系覆蓋從基礎(chǔ)理論到生產(chǎn)落地的全鏈路。 基礎(chǔ)核心能力?大模型底層認(rèn)知?精通LLM核心參數(shù)Token、上下文窗口、溫度采樣、函數(shù)調(diào)用、結(jié)構(gòu)化輸出清晰掌握不同模型的能力邊界能根據(jù)任務(wù)場(chǎng)景選擇推理模型、輕量模型或Embedding模型組合 。?編程語言與后端基礎(chǔ)?熟練使用Pythonasyncio異步、異常處理作為主力開發(fā)語言掌握FastAPI接口開發(fā)、SSE流式輸出、Docker容器化等基礎(chǔ)能力TypeScript/Go可作為高并發(fā)場(chǎng)景的加分項(xiàng) 。?Agent經(jīng)典范式理解?吃透ReAct、Plan-and-Execute、Self-Reflection反思、分層記憶短期上下文/長(zhǎng)期向量記憶、多智能體協(xié)作等核心范式建立“設(shè)計(jì)智能體而非寫死程序”的思維模式 。? 專項(xiàng)核心技能?任務(wù)拆解與工作流設(shè)計(jì)?把復(fù)雜業(yè)務(wù)目標(biāo)拆分為帶驗(yàn)證節(jié)點(diǎn)的分步流程設(shè)計(jì)帶條件分支、異常回退、人工介入的非線性格式避免Agent出現(xiàn)跳步、漏步、誤判等失效問題 。?提示與上下文工程?從“寫單條提示詞”升級(jí)為構(gòu)造穩(wěn)定上下文環(huán)境掌握角色定義、輸入歸一、上下文裁剪、輸出約束等技巧保障同類任務(wù)的Agent行為路徑可復(fù)現(xiàn)、不漂移 。?RAG與知識(shí)工程?完整掌握文檔解析、切片策略、混合檢索、Rerank重排序、引用追蹤、知識(shí)權(quán)限過濾全鏈路能基于企業(yè)內(nèi)部文檔構(gòu)建高可用的知識(shí)庫Agent 。?工具調(diào)用與MCP協(xié)議?精通傳統(tǒng)Function-Calling的參數(shù)定義、異常重試掌握2026年主流的MCP模型上下文協(xié)議開發(fā)實(shí)現(xiàn)工具一次開發(fā)、多Agent復(fù)用解決跨系統(tǒng)對(duì)接碎片化問題 。?Agent框架實(shí)操?以工業(yè)首選的LangGraph為核心掌握狀態(tài)管理、分支循環(huán)、持久化等核心能力能自定義節(jié)點(diǎn)和工具處理復(fù)雜業(yè)務(wù)而非僅復(fù)制Demo代碼AutoGen、CrewAI等可作為多智能體場(chǎng)景補(bǔ)充 。?Skill技能包開發(fā)?將業(yè)務(wù)SOP沉淀為標(biāo)準(zhǔn)化Skill模塊包含觸發(fā)條件、執(zhí)行步驟、重試降級(jí)、終止條件等規(guī)則讓Agent處理同類任務(wù)時(shí)輸出穩(wěn)定、可復(fù)用避免重復(fù)編寫Prompt 。 生產(chǎn)落地核心能力?企業(yè)級(jí)治理能力?覆蓋權(quán)限控制、版本管理、審計(jì)日志、鏈路追蹤、成本監(jiān)控等環(huán)節(jié)打造可解釋、可追蹤、可控制的非黑盒Agent滿足企業(yè)上線要求 。?評(píng)測(cè)與安全治理?建立全鏈路效果評(píng)測(cè)體系通過Prompt注入防護(hù)、參數(shù)校驗(yàn)、權(quán)限最小化等手段控制Agent錯(cuò)誤成本避免幻覺、越權(quán)等風(fēng)險(xiǎn)導(dǎo)致業(yè)務(wù)事故 。?可觀測(cè)性與調(diào)試?實(shí)現(xiàn)Agent全鏈路追蹤可視化展示其思考過程、工具調(diào)用日志、Token開銷快速定位規(guī)劃失敗、工具報(bào)錯(cuò)等問題從Demo級(jí)項(xiàng)目迭代為穩(wěn)定運(yùn)行的生產(chǎn)系統(tǒng) 。需要我為你整理一份?Agent開發(fā)從0到1的實(shí)戰(zhàn)學(xué)習(xí)路線?嗎幫你快速從基礎(chǔ)入門到能落地企業(yè)級(jí)項(xiàng)目。Agent開發(fā)從0到1的實(shí)戰(zhàn)學(xué)習(xí)路線?這份Agent開發(fā)從0到1的實(shí)戰(zhàn)路線完全避開零散教程的無效學(xué)習(xí)按「入門筑基→進(jìn)階工程化→生產(chǎn)級(jí)落地」的遞進(jìn)節(jié)奏設(shè)計(jì)每一步都有明確可落地的產(chǎn)出幫你從跑通Demo到交付企業(yè)級(jí)項(xiàng)目。 第一階段入門筑基1-2周—— 快速搭建第一個(gè)可用Agent核心目標(biāo)是建立Agent的基礎(chǔ)認(rèn)知跑通完整的智能閉環(huán)零基礎(chǔ)也能快速上手。?LLM調(diào)用工程?掌握結(jié)構(gòu)化系統(tǒng)提示、少樣本示例、思維鏈引導(dǎo)三類核心Prompt技巧吃透Function Calling的完整閉環(huán)用LiteLLM做模型統(tǒng)一封裝屏蔽不同廠商接口差異 。?基礎(chǔ)通信能力?吃透REST/HTTP協(xié)議掌握SSE流式輸出實(shí)現(xiàn)打字機(jī)效果提前了解2026年主流適配的MCP模型上下文協(xié)議實(shí)現(xiàn)工具一次開發(fā)多Agent復(fù)用 。?入門框架選型?零基礎(chǔ)選Dify/Coze可視化拖拽快速驗(yàn)證業(yè)務(wù)想法有代碼基礎(chǔ)直接上手LangChain不用從零造輪子就能快速做出可用Demo 。?階段產(chǎn)出?一個(gè)能自主查詢天氣、調(diào)用本地文件的極簡(jiǎn)Agent完整實(shí)現(xiàn)「用戶提問→工具調(diào)用→結(jié)果返回」的閉環(huán)。? 第二階段核心能力進(jìn)階1-2個(gè)月—— 掌握五大Agent核心技術(shù)這一階段是從“會(huì)跑Demo”到“能做項(xiàng)目”的關(guān)鍵覆蓋Agent開發(fā)的五大核心支柱能力。?RAG全鏈路開發(fā)?完整掌握文檔解析、智能切片、向量檢索、Rerank重排序、引用追蹤全流程能基于企業(yè)內(nèi)部文檔搭建高可用知識(shí)庫Agent這是求職時(shí)最有競(jìng)爭(zhēng)力的實(shí)戰(zhàn)項(xiàng)目 。?工具與記憶體系?把內(nèi)部API、數(shù)據(jù)庫查詢封裝成標(biāo)準(zhǔn)化工具函數(shù)設(shè)計(jì)分層記憶機(jī)制——短期用對(duì)話歷史緩存、長(zhǎng)期用向量數(shù)據(jù)庫存儲(chǔ)突破大模型上下文窗口限制 。?經(jīng)典范式落地?吃透ReAct推理-行動(dòng)、Plan-and-Execute任務(wù)規(guī)劃、Self-Reflection反思等經(jīng)典架構(gòu)模式能根據(jù)不同業(yè)務(wù)場(chǎng)景靈活選型不再靠零散Prompt拼接脆弱邏輯 。?狀態(tài)與框架精通?深入學(xué)習(xí)LangGraph的狀態(tài)管理、分支循環(huán)、持久化核心能力用狀態(tài)機(jī)管理Agent的任務(wù)進(jìn)度解決傳統(tǒng)線性Chain無法處理復(fù)雜分支的問題 。?階段產(chǎn)出?一個(gè)完整的企業(yè)內(nèi)部文檔問答RAG Agent支持多格式文檔上傳、精準(zhǔn)檢索、來源標(biāo)注可直接放進(jìn)求職作品集。 第三階段工程化與生產(chǎn)落地2-3個(gè)月—— 打造企業(yè)級(jí)可用Agent這一階段跨越Demo到生產(chǎn)的工程化天塹解決高并發(fā)、異常兜底、穩(wěn)定性等真實(shí)業(yè)務(wù)痛點(diǎn)也是市場(chǎng)上最稀缺的能力。?Harness駕馭工程體系?搭建完整的Agent控制框架包含系統(tǒng)提示詞憲法、工具權(quán)限管控、安全沙箱、全鏈路監(jiān)控六大模塊把“不可控的大模型”馴化為“按規(guī)則執(zhí)行的智能體” 。?軟件工程能力補(bǔ)全?掌握Agent的容錯(cuò)降級(jí)策略、超時(shí)控制、異常重試機(jī)制實(shí)現(xiàn)全鏈路推理過程可視化追蹤能快速定位規(guī)劃失敗、工具報(bào)錯(cuò)等問題 。?向量數(shù)據(jù)庫工程化?熟練使用Milvus/Qdrant等生產(chǎn)級(jí)向量庫掌握索引優(yōu)化、分片部署、高可用集群搭建解決百萬級(jí)以上文檔的檢索性能問題 。?多智能體協(xié)作?基于AutoGen/CrewAI實(shí)現(xiàn)多角色分工系統(tǒng)比如讓“產(chǎn)品Agent”拆解需求、“開發(fā)Agent”寫代碼、“測(cè)試Agent”自動(dòng)校驗(yàn)結(jié)果完成復(fù)雜多步驟任務(wù) 。?階段產(chǎn)出?一個(gè)支持高并發(fā)、帶完整權(quán)限和審計(jì)體系的生產(chǎn)級(jí)業(yè)務(wù)Agent比如自動(dòng)處理員工報(bào)銷、智能客服理賠等真實(shí)場(chǎng)景系統(tǒng)。 第四階段職業(yè)能力升級(jí)長(zhǎng)期—— 成為資深A(yù)gent工程師?安全與治理體系?建立Prompt注入防護(hù)、輸出內(nèi)容審核、權(quán)限最小化機(jī)制搭建完整的Agent效果評(píng)測(cè)體系把幻覺率、錯(cuò)誤率控制在企業(yè)可接受范圍內(nèi) 。?成本與性能優(yōu)化?實(shí)現(xiàn)大模型推理加速、Token動(dòng)態(tài)裁剪、冷熱記憶分層存儲(chǔ)把Agent的運(yùn)行成本降低一個(gè)數(shù)量級(jí)滿足大規(guī)模業(yè)務(wù)部署要求。?架構(gòu)設(shè)計(jì)能力?能主導(dǎo)復(fù)雜多智能體系統(tǒng)的架構(gòu)設(shè)計(jì)結(jié)合微服務(wù)、事件驅(qū)動(dòng)架構(gòu)支撐企業(yè)級(jí)大規(guī)模Agent集群的穩(wěn)定運(yùn)行成為團(tuán)隊(duì)核心技術(shù)負(fù)責(zé)人。需要我為你整理一份?每個(gè)階段對(duì)應(yīng)的實(shí)戰(zhàn)項(xiàng)目清單和免費(fèi)學(xué)習(xí)資源?嗎幫你直接照著動(dòng)手練快速積累能寫進(jìn)簡(jiǎn)歷的項(xiàng)目經(jīng)驗(yàn)。function calling基礎(chǔ):回定義工具schema并讓模型調(diào)用Function Calling 的核心流程分為三步定義工具 Schema、模型生成調(diào)用指令、應(yīng)用執(zhí)行并回傳結(jié)果。1. 定義工具 Schema使用 JSON Schema 描述函數(shù)名稱、功能及參數(shù)約束確保模型能準(zhǔn)確理解并生成合法參數(shù)。python ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tools [ { type: function, function: { name: get_current_weather, description: 獲取指定城市的當(dāng)前天氣, parameters: { type: object, properties: { location: { type: string, description: 城市名稱如北京、上海 }, unit: { type: string, enum: [celsius, fahrenheit], description: 溫度單位 } }, required: [location] # 必填參數(shù) } } } ]2. 發(fā)起請(qǐng)求與解析調(diào)用將tools傳入 API 請(qǐng)求。若模型決定調(diào)用返回的tool_calls中包含函數(shù)名和參數(shù)字符串需 JSON 解析。python ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? import json from openai import OpenAI ? client OpenAI(api_keyyour-api-key) ? # 第一次請(qǐng)求讓模型決定是否調(diào)用工具 response client.chat.completions.create( modelgpt-3.5-turbo, # 或 qwen-plus, deepseek-chat 等支持 FC 的模型 messages[{role: user, content: 北京今天天氣怎么樣}], toolstools, tool_choiceauto # 自動(dòng)判斷是否調(diào)用 ) ? message response.choices.message tool_calls message.tool_calls ? # 檢查是否有工具調(diào)用 if tool_calls: for tool_call in tool_calls: func_name tool_call.function.name func_args json.loads(tool_call.function.arguments) # 解析參數(shù)字符串為字典 print(f調(diào)用函數(shù): {func_name}, 參數(shù): {func_args}) # 執(zhí)行實(shí)際函數(shù) (示例) if func_name get_current_weather: result get_current_weather(**func_args) # 第二次請(qǐng)求將結(jié)果回傳給模型生成最終回答 messages [ {role: user, content: 北京今天天氣怎么樣}, message, # 包含 tool_calls 的助手消息 { role: tool, tool_call_id: tool_call.id, # 必須對(duì)應(yīng)上一次的 call id content: json.dumps(result) # 工具執(zhí)行結(jié)果 } ] final_response client.chat.completions.create( modelgpt-3.5-turbo, messagesmessages ) print(final_response.choices.message.content)3. 關(guān)鍵注意事項(xiàng)?角色對(duì)應(yīng)?回傳結(jié)果時(shí)消息角色必須是tool且必須攜帶tool_call_id以匹配對(duì)應(yīng)的調(diào)用請(qǐng)求 。?參數(shù)校驗(yàn)?模型生成的參數(shù)可能不符合預(yù)期建議在本地執(zhí)行前進(jìn)行類型和范圍校驗(yàn) 。?安全邊界?模型僅生成調(diào)用意圖實(shí)際執(zhí)行由應(yīng)用層控制敏感操作如刪除數(shù)據(jù)需在代碼層增加權(quán)限驗(yàn)證 。工具調(diào)用流程清楚了要不要再看看如何定義多個(gè)工具的 Schema?或者參數(shù)校驗(yàn)具體怎么實(shí)現(xiàn)?如何定義工具schema并讓模型調(diào)用定義工具 Schema 并讓模型調(diào)用Function Calling / Tool Use的核心在于建立一套?結(jié)構(gòu)化契約?將自然語言意圖轉(zhuǎn)化為可執(zhí)行的代碼指令。整個(gè)過程分為“定義規(guī)范”、“發(fā)起調(diào)用”和“結(jié)果回傳”三個(gè)關(guān)鍵階段。以下是完整的實(shí)現(xiàn)指南1. 核心概念什么是 Tool SchemaTool Schema 是給大模型看的“接口說明書”通常遵循 ?JSON Schema? 標(biāo)準(zhǔn)。它不是給程序員看的 API 文檔而是為了約束模型的輸出使其生成符合系統(tǒng)要求的結(jié)構(gòu)化數(shù)據(jù)。一個(gè)標(biāo)準(zhǔn)的 Schema 包含三個(gè)核心要素?Name (名稱)?唯一標(biāo)識(shí)建議使用snake_case如get_weather動(dòng)詞名詞結(jié)構(gòu)避免歧義。?Description (描述)??最關(guān)鍵的部分?。用自然語言清晰說明工具的功能、適用場(chǎng)景以及?何時(shí)不該使用?。描述越精準(zhǔn)模型選擇工具的概率越高。?Parameters (參數(shù))?定義輸入?yún)?shù)的類型、必填項(xiàng)、枚舉值等約束。2. 第一步定義工具 Schema以下是一個(gè)獲取天氣工具的 Schema 定義示例。注意description和enum的使用這能顯著降低模型出錯(cuò)率。python ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tools [ { type: function, function: { name: get_current_weather, description: 獲取指定城市的當(dāng)前天氣狀況。當(dāng)用戶詢問溫度、是否下雨、天氣冷暖時(shí)使用。, parameters: { type: object, properties: { location: { type: string, description: 城市名稱例如北京、上海、深圳 }, unit: { type: string, enum: [celsius, fahrenheit], description: 溫度單位默認(rèn)為攝氏度(celsius) } }, required: [location] # 明確告知模型哪些參數(shù)必須提供 } } } ]?設(shè)計(jì)最佳實(shí)踐??邊界清晰?在 description 中寫明“僅用于...”防止模型誤用。?約束明確?對(duì)于有限選項(xiàng)參數(shù)如單位、狀態(tài)務(wù)必使用enum限制避免模型生成非法字符串。?扁平化結(jié)構(gòu)?盡量保持參數(shù)層級(jí)扁平嵌套過深會(huì)增加模型解析難度。3. 第二步發(fā)起請(qǐng)求與解析調(diào)用將定義好的tools傳入 API 請(qǐng)求。模型會(huì)根據(jù)用戶問題判斷是否需要調(diào)用工具。如果需要它會(huì)返回一個(gè)特殊的tool_calls對(duì)象而不是直接回答文本。python ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? import json from openai import OpenAI ? client OpenAI(api_keyyour-api-key) ? # 1. 第一次請(qǐng)求發(fā)送用戶問題和工具定義 messages [{role: user, content: 北京今天天氣怎么樣}] ? response client.chat.completions.create( modelgpt-4o, # 或 gpt-3.5-turbo, qwen-plus 等支持 FC 的模型 messagesmessages, toolstools, tool_choiceauto # auto: 自動(dòng)判斷; required: 強(qiáng)制調(diào)用; none: 禁止調(diào)用 ) ? message response.choices[0].message tool_calls message.tool_calls ? # 2. 檢查模型是否決定調(diào)用工具 if tool_calls: print(模型決定調(diào)用工具...) for tool_call in tool_calls: func_name tool_call.function.name # 注意arguments 是 JSON 字符串需要解析為字典 func_args json.loads(tool_call.function.arguments) print(f函數(shù)名: {func_name}) print(f參數(shù): {func_args}) # 3. 執(zhí)行實(shí)際業(yè)務(wù)邏輯 if func_name get_current_weather: weather_data get_current_weather_real_api(**func_args) # 4. 構(gòu)造回傳消息 # 必須保留原始助手消息包含 tool_calls并追加 tool 角色的結(jié)果 messages.append(message) messages.append({ role: tool, tool_call_id: tool_call.id, # 關(guān)鍵必須與調(diào)用的 ID 對(duì)應(yīng) content: json.dumps(weather_data) # 工具執(zhí)行結(jié)果 }) # 5. 第二次請(qǐng)求將結(jié)果回傳給模型生成最終自然語言回答 final_response client.chat.completions.create( modelgpt-4o, messagesmessages ) print(最終回答:, final_response.choices[0].message.content) else: # 模型認(rèn)為不需要調(diào)用工具直接回答 print(直接回答:, message.content)4. 第三步關(guān)鍵注意事項(xiàng)A. 消息角色的嚴(yán)格對(duì)應(yīng)在第二輪對(duì)話中回傳工具結(jié)果時(shí)消息角色必須是role: tool且必須攜帶tool_call_id。這個(gè) ID 是模型在第一輪響應(yīng)中生成的用于將“問題”與“答案”配對(duì)。如果 ID 不匹配或缺失模型可能會(huì)產(chǎn)生幻覺或報(bào)錯(cuò)。B. 并行調(diào)用處理如果用戶問“北京和上海的天氣如何”模型可能在一次響應(yīng)中返回多個(gè)tool_calls。?處理方式?遍歷所有tool_calls并行執(zhí)行各個(gè)函數(shù)提高速度然后將所有結(jié)果分別以role: tool的消息形式追加到消息列表中最后再發(fā)起一次模型請(qǐng)求。C. 安全與校驗(yàn)?不要信任模型參數(shù)?模型生成的參數(shù)可能不符合預(yù)期例如 location 傳入了 SQL 注入語句。在執(zhí)行真實(shí)函數(shù)前務(wù)必在代碼層進(jìn)行參數(shù)校驗(yàn)和清洗。?敏感操作保護(hù)?對(duì)于刪除、支付等敏感工具建議在 Schema 描述中增加限制并在代碼執(zhí)行層增加二次確認(rèn)或權(quán)限驗(yàn)證。D. 調(diào)試技巧如果模型不調(diào)用工具或參數(shù)錯(cuò)誤?優(yōu)化 Description?檢查描述是否過于簡(jiǎn)略是否明確了觸發(fā)條件。?增加 Examples?雖然標(biāo)準(zhǔn) JSON Schema 不支持 examples 字段直接傳給所有模型但在description中寫入示例如“城市名稱例如北京”通常有效。?檢查 Required?確保必填參數(shù)在required數(shù)組中聲明否則模型可能會(huì)遺漏關(guān)鍵信息。通過這套流程你可以讓大模型從單純的“聊天機(jī)器人”進(jìn)化為能夠操作外部系統(tǒng)、獲取實(shí)時(shí)數(shù)據(jù)的“智能 Agent”。python異步Python 異步編程是使用 async/await 語法配合 asyncio 標(biāo)準(zhǔn)庫讓程序在等待 I/O 操作時(shí)能同時(shí)處理其他任務(wù)適合網(wǎng)絡(luò)請(qǐng)求、文件讀寫等 I/O 密集型場(chǎng)景?。???基礎(chǔ)概念和語法?核心關(guān)鍵字?async 定義異步函數(shù)await 暫停等待結(jié)果調(diào)用 async 函數(shù)返回協(xié)程對(duì)象而非直接執(zhí)行 。????運(yùn)行方式?使用 asyncio.run() 啟動(dòng)事件循環(huán)并執(zhí)行主協(xié)程Python 3.7 推薦使用 。????協(xié)程與任務(wù)區(qū)別?協(xié)程對(duì)象async def 函數(shù)調(diào)用后得到不能直接運(yùn)行需 await 或任務(wù)驅(qū)動(dòng)。任務(wù)對(duì)象用 asyncio.create_task() 包裝協(xié)程可被事件循環(huán)調(diào)度、跟蹤狀態(tài)、支持取消。????并發(fā)執(zhí)行?asyncio.gather() 可并發(fā)執(zhí)行多個(gè)協(xié)程并等待全部完成 。???事件循環(huán)工作原理?核心作用?事件循環(huán)是異步編程的調(diào)度員在單線程中管理所有協(xié)程的執(zhí)行順序 。????工作流程?維護(hù)任務(wù)隊(duì)列調(diào)度協(xié)程執(zhí)行。協(xié)程遇到 await 時(shí)掛起事件循環(huán)去執(zhí)行其他任務(wù)。I/O 操作完成后喚醒對(duì)應(yīng)協(xié)程繼續(xù)執(zhí)行。????底層機(jī)制?使用 I/O 多路復(fù)用如 Linux epoll、macOS kqueue、Windows IOCP監(jiān)控文件描述符避免線程阻塞和頻繁上下文切換 。????避免阻塞?不要在協(xié)程中使用 time.sleep() 等同步阻塞操作應(yīng)使用 asyncio.sleep()否則會(huì)阻塞整個(gè)事件循環(huán) 。???實(shí)際應(yīng)用場(chǎng)景?適用場(chǎng)景?網(wǎng)絡(luò)請(qǐng)求API 調(diào)用、爬蟲。數(shù)據(jù)庫查詢。文件讀寫。其他 I/O 密集型操作。????不適用場(chǎng)景?CPU 密集型任務(wù)如科學(xué)計(jì)算、視頻編碼異步無法提升性能GIL 限制下應(yīng)使用多進(jìn)程 。????性能對(duì)比?3 個(gè)各需 2 秒的 API 請(qǐng)求同步執(zhí)行約 6 秒異步并發(fā)執(zhí)行約 2 秒 。????與多線程區(qū)別?多線程受 GIL 限制純 Python 代碼無法真正并行。異步在 I/O 等待時(shí)釋放控制權(quán)單線程高效管理成千上萬協(xié)程。異步避免線程上下文切換開銷更適合高并發(fā) I/O 場(chǎng)景。???需要我?guī)湍阏碓诋惒絽f(xié)程中避免阻塞的替代方案嗎比如用asyncio.sleep替代time.sleep可以幫你寫出更高效的異步代碼。