偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

構(gòu)建強(qiáng)大AI Agent的關(guān)鍵 = Pydantic AI + MCP + Advanced Web Scraping

人工智能
MCP 不僅僅是一個協(xié)議或架構(gòu)模式,它代表了設(shè)計(jì) AI 驅(qū)動應(yīng)用和分布式系統(tǒng)的根本轉(zhuǎn)變。通過有效分離模型、上下文和協(xié)議,組織可以創(chuàng)建適應(yīng)性強(qiáng)、可擴(kuò)展且易于維護(hù)的解決方案。

引言

在文中,我將展示一個超快速教程,教你如何使用 Pydantic AI、MCP 和高級網(wǎng)頁抓取技術(shù),構(gòu)建一個強(qiáng)大的智能聊天機(jī)器人,適用于商業(yè)或個人用途。。

圖片

MCP 逐漸被接受,因?yàn)樗且粋€開放標(biāo)準(zhǔn)。我制作了一些非常酷的視頻,你一定會喜歡。在 AI 項(xiàng)目開發(fā)中,AI 模型的集成非常復(fù)雜,現(xiàn)有框架如 LangGraph 和 Pydantic AI Tools 存在一些問題。LangGraph 和 Pydantic AI 的代碼抽象度高,且過于商業(yè)化。

MCP 的優(yōu)勢在于,開放標(biāo)準(zhǔn)便于服務(wù)提供商開發(fā) API,避免開發(fā)者重復(fù)造輪子,并允許他們使用現(xiàn)有的 MCP 服務(wù)來增強(qiáng)智能代理的功能。

最近,DeepSeek 發(fā)布了一個新的開源模型 DeepSeek-V3,這是一個擁有 6710 億參數(shù)的專家混合模型(MoE),其中每個 token 激活 370 億參數(shù)。訓(xùn)練僅耗時兩個月,成本不到 600 萬美元,足以與 ChatGPT 競爭,并震撼全球 AI 社區(qū)。

DeepSeek-V3 的完整訓(xùn)練僅需 278.8 萬 GPU 小時。假設(shè) H800 GPU 的租賃價格為每 GPU 小時 2 美元,DeepSeek-V3 的總訓(xùn)練成本僅為 557.6 萬美元。

Pydantic AI 是一個我在多個視頻中介紹過的框架,因此這里不再詳細(xì)描述。但其應(yīng)用非常易于理解。

接下來,我將通過一個實(shí)時聊天機(jī)器人演示,向你展示我的意思。

演示

我將提出兩個問題:“搜索有關(guān)人工智能的最新新聞”和“創(chuàng)建一個柱狀圖,展示全球五大城市的人口”。你也可以提出任何你想問的問題。

聊天機(jī)器人使用模型控制協(xié)議(MCP),其中不同工具協(xié)同工作以完成任務(wù)。Python 工具由 FastMCP 驅(qū)動,可以安全地運(yùn)行 Python 代碼,并使用 PythonREPL 類創(chuàng)建可視化內(nèi)容。它包含兩個工具:python_repl(code: str) 用于運(yùn)行代碼,data_visualization(code: str) 用于生成 Matplotlib 圖表。

網(wǎng)頁搜索工具使用 Exa API 獲取搜索結(jié)果,配置 FastMCP 作為 API 客戶端,默認(rèn)返回五個搜索結(jié)果,并以 Markdown 格式返回答案。

AI 代理連接到兩個 MCP 服務(wù)器,必要時進(jìn)行重試,并執(zhí)行多步驟任務(wù),如使用 exa_search.py 查找氣候變化數(shù)據(jù)或使用 python_tools.py 創(chuàng)建柱狀圖。

免責(zé)聲明:本文僅用于研究為目的。我們不鼓勵任何人抓取網(wǎng)站,特別是那些可能有條款和條件禁止此類行為的網(wǎng)頁。

DeepSeek V3 是如何訓(xùn)練的?

DeepSeek 能夠在兩年內(nèi)以僅 557 萬美元的成本開發(fā)出高性能 AI 模型,這得益于以下創(chuàng)新技術(shù):

精確激活部分“腦細(xì)胞”

DeepSeek-V3 采用了“混合專家架構(gòu)”設(shè)計(jì)。簡單來說,它只在需要時激活部分“腦細(xì)胞”,而不是全部,從而大大降低了計(jì)算資源消耗。訓(xùn)練模型僅使用了 2048 個 NVIDIA H800 GPU。

數(shù)據(jù)處理與節(jié)能創(chuàng)新

DeepSeek 開發(fā)了內(nèi)部工具來生成高質(zhì)量訓(xùn)練數(shù)據(jù),并使用“蒸餾技術(shù)”進(jìn)一步壓縮計(jì)算資源。訓(xùn)練過程中使用了 FP8 技術(shù),這種低精度數(shù)據(jù)格式可以顯著降低顯存需求,同時提高效率。FP8 技術(shù)將顯存需求降至傳統(tǒng) FP16 技術(shù)的一半,同時保持相同的計(jì)算性能。

圖片圖片

開始編碼

我們通過以下方式初始化代碼:

?MCPServerStdio:以子進(jìn)程方式運(yùn)行服務(wù)器,并通過 stdio 傳輸進(jìn)行連接。?FastMCP:使構(gòu)建 MCP 服務(wù)器變得簡單直觀。創(chuàng)建工具、公開資源并使用簡潔的 Python 代碼定義提示。?exa_py:原名 Metaphor,是一個基于大型語言模型的搜索引擎 ??,允許用戶使用完整句子和自然語言進(jìn)行搜索,還能模擬人們在網(wǎng)絡(luò)上分享和討論鏈接的方式來查詢內(nèi)容。

app.py

import os
import asyncio
from pydantic_ai importAgent
from pydantic_ai.mcp importMCPServerStdio

exa_search.py

from mcp.server.fastmcp importFastMCP
from dotenv import load_dotenv
import os
from exa_py importExa

python_tools.py

from mcp.server.fastmcp importFastMCP
import io
import base64
import matplotlib.pyplot as plt
import sys
from io importStringIO
import traceback

我們定義了一個由 FastMCP 驅(qū)動的 Python 工具,用于執(zhí)行任意 Python 代碼并使用 Matplotlib 生成數(shù)據(jù)可視化。它包括一個 PythonREPL 類,在受限環(huán)境中運(yùn)行 Python 代碼,重定向標(biāo)準(zhǔn)輸出 sys.stdout 以捕獲執(zhí)行結(jié)果,并返回輸出或錯誤堆棧信息。

它提供了兩個 MCP 工具:python_repl(code: str) 執(zhí)行 Python 代碼并返回其輸出;data_visualization(code: str) 運(yùn)行 Python 代碼,保存 Matplotlib 圖表,并將圖像返回為 base64 編碼字符串,處理可能出現(xiàn)的錯誤。

使用 FastMCP("python_tools") 定義了一個用于執(zhí)行 Python 任務(wù)的多代理工具,并在直接執(zhí)行時作為 MCP 服務(wù)器運(yùn)行。

from mcp.server.fastmcp importFastMCP
import io
import base64
import matplotlib.pyplot as plt
import sys
from io importStringIO
import traceback


mcp =FastMCP("python_tools")


classPythonREPL:
def run(self, code):
        old_stdout = sys.stdout
        redirected_output = sys.stdout =StringIO()


try:
exec(code, globals())
            sys.stdout = old_stdout
return redirected_output.getvalue()
exceptExceptionas e:
            sys.stdout = old_stdout
return f"錯誤:{str(e)}\n{traceback.format_exc()}"


repl =PythonREPL()


@mcp.tool()
async def python_repl(code: str)-> str:
"""執(zhí)行 Python 代碼。"""
return repl.run(code)


@mcp.tool()
async def data_visualization(code: str)-> str:
"""執(zhí)行 Python 代碼,使用 Matplotlib 進(jìn)行可視化。"""
try:
        repl.run(code)
        buf = io.BytesIO()
        plt.savefig(buf, format='png')
        buf.seek(0)
        img_str = base64.b64encode(buf.getvalue()).decode()
        plt.close()# 關(guān)閉圖像以釋放內(nèi)存
return f"data:image/png;base64,{img_str}"
exceptExceptionas e:
return f"創(chuàng)建圖表時出錯:{str(e)}"


if __name__ =="__main__":
    mcp.run()

然后,我們使用 Exa API 在 MCP(模型控制協(xié)議)框架內(nèi)設(shè)置了一個網(wǎng)頁搜索工具。首先加載環(huán)境變量并初始化 FastMCP 及其元數(shù)據(jù)。

接著,使用環(huán)境變量中的 API 密鑰(或默認(rèn)密鑰)配置 Exa API 客戶端。定義了默認(rèn)搜索配置,每次搜索默認(rèn)返回五個結(jié)果,除非另有指定。主要函數(shù)注冊為 MCP 工具,異步查詢 Exa API,并以 Markdown 格式返回結(jié)果。

format_search_results() 函數(shù)結(jié)構(gòu)化輸出結(jié)果,包括標(biāo)題、URL、發(fā)布日期和摘要(如果可用)。如果直接執(zhí)行腳本,則運(yùn)行 MCP 實(shí)例。

from mcp.server.fastmcp importFastMCP
from dotenv import load_dotenv
import os
from exa_py importExa


load_dotenv(override=True)


# 初始化 FastMCP
mcp =FastMCP(
    name="websearch",
    versinotallow="1.0.0",
    descriptinotallow="使用 Exa API 的網(wǎng)頁搜索功能"
)


# 初始化 Exa 客戶端
exa_api_key = os.getenv("EXA_API_KEY","")
exa =Exa(api_key=exa_api_key)


# 默認(rèn)搜索配置
websearch_config ={
"parameters":{
"default_num_results":5,
"include_domains":[]
}
}


@mcp.tool()
async def search_web(query: str, num_results:int=None)-> str:
"""使用 Exa API 搜索網(wǎng)頁并以 Markdown 格式返回結(jié)果。"""
try:
        search_args ={
"num_results": num_results or websearch_config["parameters"]["default_num_results"]
}


        search_results = exa.search_and_contents(
            query,
            summary={"query":"主要內(nèi)容和關(guān)鍵要點(diǎn)"},
**search_args
)


return format_search_results(search_results)
exceptExceptionas e:
return f"使用 Exa 搜索時發(fā)生錯誤:{e}"


def format_search_results(search_results):
ifnot search_results.results:
return"未找到結(jié)果。"


    markdown_results ="### 搜索結(jié)果:\n\n"
for idx, result in enumerate(search_results.results,1):
        title = result.title if hasattr(result,'title')and result.title else"無標(biāo)題"
        url = result.url
        published_date = f"(發(fā)布日期:{result.published_date})"if hasattr(result,'published_date')and result.published_date else""


        markdown_results += f"**{idx}.** [{title}]({url}){published_date}\n"


if hasattr(result,'summary')and result.summary:
            markdown_results += f"> **摘要:** {result.summary}\n\n"
else:
            markdown_results +="\n"


return markdown_results


if __name__ =="__main__":
    mcp.run()

我開發(fā)了一個 AI 代理,利用 DeepSeek Chat 模型處理請求,同時集成了兩個 MCP(模型控制協(xié)議)服務(wù)器:

?exa_search.py:使用 Exa API 處理網(wǎng)頁搜索。?python_tools.py:提供基于 Python 的工具,包括數(shù)據(jù)分析和可視化。

代理通過 agent.run_mcp_servers 定義,連接到這些服務(wù)器,并在必要時重試最多三次。主要函數(shù)運(yùn)行 MCP 服務(wù)器并執(zhí)行多步驟任務(wù):

1.搜索近期氣候變化統(tǒng)計(jì)數(shù)據(jù)。2.使用 Python 生成一個柱狀圖,展示過去十年全球氣溫上升情況。

import os
import asyncio
from pydantic_ai importAgent
from pydantic_ai.mcp importMCPServerStdio
from pydantic_ai.models.openai importOpenAIMode


deepseek_chat_model =OpenAIModel(# 定義基礎(chǔ)為 Open AI
'deepseek-chat',
    base_url='https://api.deepseek.com',
    api_key=os.environ["DEEPSEEK_API_KEY"],
)


# 定義 MCP 服務(wù)器
exa_server =MCPServerStdio(
'python',
['exa_search.py']
)


python_tools_server =MCPServerStdio(
'python',
['python_tools.py']
)


# 定義包含兩個 MCP 服務(wù)器的代理
agent =Agent(
    deepseek_chat_model,
    mcp_servers=[exa_server, python_tools_server],
    retries=3
)


# 主異步函數(shù)
async def main():
    async with agent.run_mcp_servers():
        result = await agent.run("""
我需要分析一些氣候數(shù)據(jù)。首先,搜索近期的氣候變化統(tǒng)計(jì)數(shù)據(jù)。
然后,創(chuàng)建一個柱狀圖,展示過去十年全球氣溫的上升情況。
使用Python進(jìn)行數(shù)據(jù)可視化。
""")
print(result)


# 運(yùn)行異步函數(shù)
if __name__ =="__main__":
    asyncio.run(main())

結(jié)論

MCP 不僅僅是一個協(xié)議或架構(gòu)模式,它代表了設(shè)計(jì) AI 驅(qū)動應(yīng)用和分布式系統(tǒng)的根本轉(zhuǎn)變。通過有效分離模型、上下文和協(xié)議,組織可以創(chuàng)建適應(yīng)性強(qiáng)、可擴(kuò)展且易于維護(hù)的解決方案。

DeepSeek-V3 體現(xiàn)了這種理念,證明了算法優(yōu)化和工程創(chuàng)新即使在資源有限的情況下也能生產(chǎn)出頂尖的 AI 模型。

這一突破不僅挑戰(zhàn)了傳統(tǒng)的 AI 商業(yè)模式,還為企業(yè)家和開發(fā)者打開了大門,讓他們能夠利用高性能 AI 作為包容性創(chuàng)新的工具。

責(zé)任編輯:武曉燕 來源: AI大模型觀察站
相關(guān)推薦

2025-05-09 06:30:52

2025-06-11 03:22:00

AIAgentMCP

2025-05-26 01:20:00

A2AMCPAI

2025-04-25 00:00:00

2025-03-28 09:33:11

2025-05-28 01:20:00

MCPRAGAgent

2025-06-05 02:00:00

AIKafkaFlink

2025-01-27 09:51:24

AI模型開源

2025-04-14 09:00:00

數(shù)據(jù)泄露AI AgentMCP協(xié)議安全

2025-01-13 08:05:04

2024-12-19 09:50:04

2024-09-12 09:16:11

2025-02-03 16:58:39

2025-04-21 04:22:00

Spring AIMCPDeepSeek

2025-06-27 16:07:08

AIAgent瀏覽器

2025-04-01 08:05:00

智能體人工智能MCP

2025-05-08 07:54:24

2025-03-05 18:45:26

RAG人工智能專業(yè)化

2025-04-16 01:00:00

API工具AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號