成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差 原創(chuàng)

發(fā)布于 2025-5-30 06:41
瀏覽
0收藏

大家好,我是九歌。今天我們聊一聊使用大模型進行數(shù)據(jù)分析。

AI數(shù)據(jù)分析作為大模型應(yīng)用的剛需,在各大平臺上的表現(xiàn)卻大相徑庭。阿里百煉的析言、ChatGPT、商湯的小浣熊、豆包,用了一圈,發(fā)現(xiàn)能打的只有豆包。但是豆包只提供大模型接口,AI數(shù)據(jù)分析卻沒有對應(yīng)的接口。

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)


首先定義一下“AI數(shù)據(jù)分析”,本文所說的AI數(shù)據(jù)分析,專指大模型對數(shù)據(jù)表格的處理能力,默認數(shù)據(jù)超過2000行!

2000行的表格直接喂給大模型讓其分析,可想而知,這是多么不現(xiàn)實的一件事情,更不要說是讓大模型對表格中的某行或某列進行精準的函數(shù)計算了。

目前各大平臺使用的解決方案,基本一致,主要是下面幾個步驟:

1.命令大模型對上傳的Excel文件,生成Python代碼,讀取表頭和表格前幾行數(shù)據(jù)
2.將讀取后的數(shù)據(jù)與用戶的需求再重新提交給大模型
3.大模型根據(jù)需求生成Pandas或者SQL代碼,對數(shù)據(jù)進行操作
4.在沙箱中執(zhí)行數(shù)據(jù)處理代碼,判斷是否處理成功
5.若處理成功,將處理后的表格路徑返回
6.若處理失敗,將錯誤信息一并交給大模型,重新生成

按理說上面的過程看起來好像一點不麻煩,于是我自信滿滿的想要智能體工作流實現(xiàn)一個,但是很快被打臉了。遇到稍微復雜點的數(shù)據(jù)分析需求,工作流陷入死循環(huán),一直報錯!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

本著不能重復造輪子的心態(tài),我開始在Github上找AI數(shù)據(jù)分析相關(guān)的開源項目。功夫不負想偷懶的人,終于發(fā)現(xiàn)了一個將近2萬star的項目——Pandas-ai!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

Pandas是Python中數(shù)據(jù)分析必用的庫!然后給ai賦能了!還這么多人星標了!

激動的心怦怦跳,顫抖的小手搓起來,讓我們一塊體驗一下吧!

安裝篇

Pandas-ai 已經(jīng)做成了Python庫,所以我們直接安裝使用就行,簡直不要太方便。我們通過以下命令即可完成Python環(huán)境搭建和Pandas-ai庫的安裝。

#創(chuàng)建虛擬環(huán)境 
python -m venv .venv 
#激活環(huán)境
.\.venv\Scripts\activate
#安裝Pandas-ai
pip install pandasai -i https://pypi.tuna.tsinghua.edu.cn/simple

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

配置篇

將Pandas-ai的github庫,下載到本地,在項目文件夾中找到pandas-ai\examples\use_openai_llm.ipynb 這個文件,并打開。

https://github.com/sinaptik-ai/pandas-ai.git

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

這個文件中,告訴我們,如何配置OpenAI大模型的api_token,從而用Pandas-ai的 df.chat方法。我們只需要學會這一種使用方法就可以了。我們需要使用以下命令,額外安裝 pandasai-openai庫。

pip install pandasai-openai -i https://pypi.tuna.tsinghua.edu.cn/simple

然后再下方的命令中填入OpenAI的api_token。Pandas-ai目前支持的大模型有限,首選OpenAI

import pandasai as pai
from pandasai_openai import OpenAI
#我修改成了opentourer的token
llm = OpenAI(api_token="your_api_token")

問題來了,我沒有OpenAI的api_token,但是我有OpenRouter的token,可以調(diào)用GPT-4o等模型。于是我找到pandasai-openai庫的源文件base.py和openai.py,修改OpenAI的URL為OpenRouter的URL,并將默認模型設(shè)置為GPT-4o

# .venv\Lib\site-packages\pandasai_openai\base.py
api_base: str = "https://openrouter.ai/api/v1"

#.venv\Lib\site-packages\pandasai_openai\openai.py
model: str = "gpt-4o"

在use_openai_llm.ipynb中,將api_token設(shè)置為openrouter的token,然后執(zhí)行每一個單元格,查看是否輸出為下方的正確信息。此處我直接使用Trae編輯器,配置了Jupyter的內(nèi)核環(huán)境,按照提示安裝相應(yīng)的包之后,就可以直接執(zhí)行ipynb文件。

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

如果你最后能夠順利執(zhí)行 df.chat()函數(shù),能夠?qū)esponse打印出值來,恭喜你配置成功了!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

進階篇

我們來看一下Pandas-ai的工作原理,非常簡單!

第一步,引入Pandas-ai庫,更換別名為pai,并初始化大模型!

import pandasai as pai
from pandasai_openai import OpenAI
#填寫token
llm = OpenAI(api_token="your token")

第二步,指定需要處理的文件路徑,然后輸入數(shù)據(jù)分析需求就可以了!返回信息都存儲在response變量中,你只需要將其直接打印或者保存成其他文件就可以了!

#文件路徑
df = pai.read_csv("./data/heart.csv")
#發(fā)送需求
response = df.chat("What is the correlation between age and cholesterol?")

你可以在Jupyter的變量面板查看當前所有變量屬性!偷偷告訴你,如果response 的Type屬性是DataFrameResponse,你直接可以使用pandas的函數(shù)操作,把response再保存成各種你想要的格式!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

import pandas as pd 
df2 = pd.DataFrame(response.value)
df2.to_csv("./data/result3.csv",index=False)

如果你再細心點,你會發(fā)現(xiàn)當前文件夾根路徑下面多了個pandasai.log文件。恭喜你,發(fā)現(xiàn)了新大陸,pandas-ai在和大模型交流過程的請求和生成代碼執(zhí)行情況以及錯誤情況,你都可以在這個文件看見了!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

對了,為了降低bug次數(shù),請將所有的數(shù)據(jù)文件,全部轉(zhuǎn)成UTF-8格式的CSV文件后,再使用pandas-ai進行處理!

接口篇

Pandas-ai 在我們自己的電腦上已經(jīng)成功跑起來了!如果我們想把這個服務(wù)分享出去,就需要開發(fā)接口了。我們已經(jīng)有了基礎(chǔ)功能,直接使用FastAPI編寫接口就可以了。因為文章篇幅有限,全部接口代碼請在文末說明中獲取。

接口我主要加了一個判斷處理,如果response數(shù)據(jù)長度超過1000,直接保存為csv文件,并返回在線下載地址;如果未超過1000,則將response內(nèi)容直接通過接口返回。

我們來測試一下接口是否能正常工作!這里依然使用Pandas-ai提供的測試表格 ./data/heart.csv。

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

pandas-ai很快給出了正確結(jié)果,Age列的平均年齡為53.5108。我們用WPS打開heart.csv看一下結(jié)果,發(fā)現(xiàn)完全正確!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

MCP篇

現(xiàn)在接口有了,當然接口也不是很完善,讀取的依然是本地文件路徑或者在線URL路徑。這段時間MCP非常火,我們再把上面的接口用MCP協(xié)議封裝一層,看看能不能放在MCP客戶端里面直接調(diào)用!

萬幸Github上有個項目FastAPI-MCP,可以很容易就能將fastapi接口轉(zhuǎn)成支持MCP協(xié)議的服務(wù)。我們安裝項目文檔,直接上手使用!只需要將fastapi對象,再用FastApiMCP封裝一下就可以了!接口中,一定帶上operation_id,不然客戶端找不到工具名。

#安裝
pip install fastapi-mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
#使用
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP

##原有接口
@app.post("/process-attendance/",operation_id="data_analysis")
#省略代碼
##

app = FastAPI()
mcp = FastApiMCP(app)

# Mount the MCP server directly to your FastAPI appmcp.mount()
mcp.mount()

我們重新啟動接口文件,訪問localhost:8989/mcp,發(fā)現(xiàn)如下信息,說明服務(wù)啟動成功!

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

打開AI編輯器 Trae,手動添加MCP Server ,配置文件如下(使用時請換成自己的路徑):

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

我們創(chuàng)建一個智能體:數(shù)據(jù)分析師,然后調(diào)用這個智能體,看一下數(shù)據(jù)分析MCP的效果吧。

#智能體輸入問題
D:\JiugeCode\Projects2025\pandasai\pandas-ai-2\pandas-ai\examples\data\heart.csv  
表格Age列的平均值是多少

Pandas-ai + Fastapi-mcp,自己動手搭建AI數(shù)據(jù)分析服務(wù),效果不比大廠差-AI.x社區(qū)

大功告成了!


本文轉(zhuǎn)載自??九歌AI大模型??  作者:九歌AI


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
已于2025-5-30 06:41:32修改
收藏
回復
舉報
回復
相關(guān)推薦
主站蜘蛛池模板: 国产精品久久久久久婷婷天堂 | 国产三级网站 | 午夜亚洲| 韩日在线 | 国产高清免费 | 国产精品国产亚洲精品看不卡15 | 久久久久久中文字幕 | 亚洲国产一区二区三区 | 欧美淫片 | 亚洲一区免费在线 | 国产一区二区在线免费 | 国产一区久久久 | 日韩一区二区三区视频在线观看 | 久久蜜桃资源一区二区老牛 | 午夜精品一区二区三区在线观看 | 污污免费网站 | 一区二区在线 | 狠狠综合久久av一区二区老牛 | 国产1区 | 99久久精品国产一区二区三区 | 国产专区视频 | 毛片一区二区 | 超碰在线97国产 | 久久久青草婷婷精品综合日韩 | 国产精品福利在线观看 | 午夜视频在线 | 国产午夜精品久久久 | 久久久久久久久久久久久久久久久久久久 | 亚洲国产成人精品久久久国产成人一区 | 成人在线中文字幕 | 美女视频一区 | 麻豆精品久久久 | 日韩精品二区 | 国产精品视频一区二区三区不卡 | 国产免费黄网 | 成人在线小视频 | 日韩有码在线观看 | 天天视频一区二区三区 | 亚洲免费大片 | 欧美日韩精品一区 | 久久99精品国产自在现线小黄鸭 |