一、应用层开发
1. FastAPI
FastAPI是构建API的优选。顾名思义,它快速、简单,并能与Pydantic完美集成,实现无缝数据验证。
复制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是一个模板引擎,用于创建动态提示,它简单而强大,在管理复杂的提示逻辑方面起着关键作用。
复制from jinja2 import Template template = Template("Hello {{ name }}!") print(template.render(name="Raj"))
二、任务调度
有时候系统需要处理繁重的工作,Celery库可以帮助跨多个线程或机器分配任务。即使在要求苛刻的操作中,也能保持应用程序的响应速度。
复制from celery import Celery app = Celery('tasks', broker='redis://localhost:6379/0') @app.task def add(x, y): return x + y
三、数据管理
数据是AI的基础,目前比较常用的两种数据库:PostgreSQL和MongoDB,分别对应着结构化和非结构化数据。
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. 简化数据操作
SQLAlchemy可以实现Python API管理数据库操作,相比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大模型集成到应用程序是最重要的步骤,实际上我们的应用就像是LLM的客户端,OpenAI、Anthropic和Google API 这些库都是AI应用集成常用的。
复制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())
五、数据处理
1. 结构化
如果应用想从LLM中得到可靠的结构化输出,那么Instructor库是一个很好的选择。它可与各种模型配合使用,并且提供了高级数据验证功能。
复制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:
这些框架简化了使用大型语言模型的工作。在一些场景下它们可以容简化提示管理和嵌入之类的复杂任务,使其易于入门。
复制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. 向量数据库
许多AI应用程序,例如RAG,依赖于存储上下文,以便于后续进行检索。
往往会使用到向量数据库存储向量以及执行相似性搜索,例如: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有助于自动优化提示,在微调AI响应时节省大量时间以及猜测。
复制from dsp import PromptOptimizer optimizer = PromptOptimizer() optimized_prompt = optimizer.optimize("Write a poem about space.") print(optimized_prompt)
5. PyMuPDF和PyPDF2
如果AI应用需要从PDF或文档中提取数据,这些库是靠谱的选择。
复制import fitz doc = fitz.open("example.pdf") for page in doc: print(page.get_text())
6. Pydantic
人工智能项目经常需要处理混乱、不可预测的数据,Pydantic优雅地可以清理、组织数据。
复制from pydantic import BaseModel class User(BaseModel): name: str age: int email: str user = User(name="rose", age=30, email="[email protected]") print(user.dict())
六、跟踪观察
大模型应用的开发不是一触而就,开发只是第一步,在开发完之后还需要持续监控它的执行状况并对其优化。
Langsmith和Langsmith,这两个平台适合用于跟踪LLM调用情况,包括延迟、成本和输出等关键数据。
复制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库可以用于构建可靠、可扩展和高效的AI应用程序。