幾個(gè)開(kāi)發(fā)大模型應(yīng)用常用的 Python 庫(kù)

一、應(yīng)用層開(kāi)發(fā)
1. FastAPI
FastAPI是構(gòu)建API的優(yōu)選。顧名思義,它快速、簡(jiǎn)單,并能與Pydantic完美集成,實(shí)現(xiàn)無(wú)縫數(shù)據(jù)驗(yàn)證。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
async def create_item(item: Item):
return {"name": item.name, "price": item.price}2. Jinja
Jinja是一個(gè)模板引擎,用于創(chuàng)建動(dòng)態(tài)提示,它簡(jiǎn)單而強(qiáng)大,在管理復(fù)雜的提示邏輯方面起著關(guān)鍵作用。
from jinja2 import Template
template = Template("Hello {{ name }}!")
print(template.render(name="Raj"))二、任務(wù)調(diào)度
有時(shí)候系統(tǒng)需要處理繁重的工作,Celery庫(kù)可以幫助跨多個(gè)線程或機(jī)器分配任務(wù)。即使在要求苛刻的操作中,也能保持應(yīng)用程序的響應(yīng)速度。
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y三、數(shù)據(jù)管理
數(shù)據(jù)是AI的基礎(chǔ),目前比較常用的兩種數(shù)據(jù)庫(kù):PostgreSQL和MongoDB,分別對(duì)應(yīng)著結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
1. 連接
一般使用psycopg2管理Postgre SQL,使用PyMongo管理MongoDB。
import psycopg2
conn = psycopg2.connect(
dbname="example", user="user", password="password", host="localhost")
cursor = conn.cursor()
cursor.execute("SELECT * FROM table")
rows = cursor.fetchall()
print(rows)2. 簡(jiǎn)化數(shù)據(jù)操作
SQLAlchemy可以實(shí)現(xiàn)Python API管理數(shù)據(jù)庫(kù)操作,相比SQL,這更干凈,更高效。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)四、API集成
將AI大模型集成到應(yīng)用程序是最重要的步驟,實(shí)際上我們的應(yīng)用就像是LLM的客戶端,OpenAI、Anthropic和Google API 這些庫(kù)都是AI應(yīng)用集成常用的。
import openai
openai.api_key = "your-api-key"
response = openai.Completion.create(
engine="text-davinci-003",
prompt="Write a Python function to add two numbers.",
max_tokens=100
)
print(response.choices[0].text.strip())五、數(shù)據(jù)處理
1. 結(jié)構(gòu)化
如果應(yīng)用想從LLM中得到可靠的結(jié)構(gòu)化輸出,那么Instructor庫(kù)是一個(gè)很好的選擇。它可與各種模型配合使用,并且提供了高級(jí)數(shù)據(jù)驗(yàn)證功能。
from instructor import Instructor
instructor = Instructor(api_key="your-api-key")
response = instructor.get_response(prompt="What is the capital of France?", model="text-davinci-003")
print(response)2. LangChain和LlamaIndex:
這些框架簡(jiǎn)化了使用大型語(yǔ)言模型的工作。在一些場(chǎng)景下它們可以容簡(jiǎn)化提示管理和嵌入之類的復(fù)雜任務(wù),使其易于入門(mén)。
from langchain.chains import LLMChain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0.7)
chain = LLMChain(llm=llm)
response = chain.run("What is 2 + 2?")
print(response)3. 向量數(shù)據(jù)庫(kù)
許多AI應(yīng)用程序,例如RAG,依賴于存儲(chǔ)上下文,以便于后續(xù)進(jìn)行檢索。
往往會(huì)使用到向量數(shù)據(jù)庫(kù)存儲(chǔ)向量以及執(zhí)行相似性搜索,例如:Pinecone、Weaviate和PGVector。
import pinecone
pinecone.init(api_key="your-api-key", environment="us-west1-gcp")
index = pinecone.Index("example-index")
index.upsert([("id1", [0.1, 0.2, 0.3])])
result = index.query([0.1, 0.2, 0.3], top_k=1)
print(result)4. DSPy
DSPy有助于自動(dòng)優(yōu)化提示,在微調(diào)AI響應(yīng)時(shí)節(jié)省大量時(shí)間以及猜測(cè)。
from dsp import PromptOptimizer
optimizer = PromptOptimizer()
optimized_prompt = optimizer.optimize("Write a poem about space.")
print(optimized_prompt)5. PyMuPDF和PyPDF2
如果AI應(yīng)用需要從PDF或文檔中提取數(shù)據(jù),這些庫(kù)是靠譜的選擇。
import fitz
doc = fitz.open("example.pdf")
for page in doc:
print(page.get_text())6. Pydantic
人工智能項(xiàng)目經(jīng)常需要處理混亂、不可預(yù)測(cè)的數(shù)據(jù),Pydantic優(yōu)雅地可以清理、組織數(shù)據(jù)。
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: str
user = User(name="rose", age=30, email="rose@example.com")
print(user.dict())六、跟蹤觀察
大模型應(yīng)用的開(kāi)發(fā)不是一觸而就,開(kāi)發(fā)只是第一步,在開(kāi)發(fā)完之后還需要持續(xù)監(jiān)控它的執(zhí)行狀況并對(duì)其優(yōu)化。
Langsmith和Langsmith,這兩個(gè)平臺(tái)適合用于跟蹤LLM調(diào)用情況,包括延遲、成本和輸出等關(guān)鍵數(shù)據(jù)。
from langfuse import LangFuse
langfuse = LangFuse(api_key="your-api-key")
langfuse.log_interaction(prompt="What is 5 + 5?", response="10", latency=0.3)以上這些Python庫(kù)可以用于構(gòu)建可靠、可擴(kuò)展和高效的AI應(yīng)用程序。




























