快速开始¶
本指南将帮助你在 5 分钟内开始使用 Unifiles。
安装¶
获取 API 密钥¶
使用 SaaS 服务¶
访问 Unifiles Console 注册账户并获取 API 密钥。
自部署¶
参考 自部署指南 部署你自己的 Unifiles 实例。
初始化客户端¶
from unifiles import UnifilesClient
# 使用 API 密钥初始化
client = UnifilesClient(api_key="sk_live_xxx")
# 或使用环境变量 UNIFILES_API_KEY
client = UnifilesClient()
# 自部署时指定服务地址
client = UnifilesClient(
api_key="sk_live_xxx",
base_url="https://your-unifiles-server.com"
)
上传文件¶
# 上传本地文件
file = client.files.upload("document.pdf")
print(f"文件 ID: {file.id}")
print(f"文件名: {file.filename}")
print(f"大小: {file.size} bytes")
# 带元数据上传
file = client.files.upload(
"contract.pdf",
metadata={"department": "legal", "year": "2024"},
tags=["contract", "important"]
)
提取内容¶
# 创建提取任务
extraction = client.extractions.create(file_id=file.id)
# 等待完成
extraction.wait()
# 获取 Markdown 内容
print(extraction.markdown)
输出示例:
# 合同标题
## 第一条 合同双方
甲方:XXX 公司
乙方:XXX 公司
## 第二条 合同内容
| 项目 | 数量 | 单价 |
|------|------|------|
| 产品A | 100 | ¥500 |
| 产品B | 200 | ¥300 |
...
创建知识库¶
# 创建知识库
kb = client.knowledge_bases.create(
name="company-docs",
description="公司文档知识库"
)
print(f"知识库 ID: {kb.id}")
添加文档到知识库¶
# 将已提取的文件添加到知识库
doc = client.knowledge_bases.documents.create(
kb_id=kb.id,
file_id=file.id
)
# 等待索引完成
doc.wait()
print(f"文档 ID: {doc.id}")
print(f"分块数: {doc.chunk_count}")
搜索知识库¶
# 语义搜索
results = client.knowledge_bases.search(
kb_id=kb.id,
query="违约责任条款",
top_k=5
)
for chunk in results.chunks:
print(f"相似度: {chunk.score:.3f}")
print(f"内容: {chunk.content[:200]}...")
print("---")
完整示例¶
将上述步骤组合成一个完整的流程:
from unifiles import UnifilesClient
def main():
# 初始化客户端
client = UnifilesClient(api_key="sk_live_xxx")
# 1. 上传文件
print("上传文件...")
file = client.files.upload(
"contract.pdf",
metadata={"type": "contract"}
)
print(f"✓ 文件上传成功: {file.id}")
# 2. 提取内容
print("提取内容...")
extraction = client.extractions.create(file_id=file.id)
extraction.wait()
print(f"✓ 内容提取成功: {len(extraction.markdown)} 字符")
# 3. 创建或获取知识库
print("准备知识库...")
kbs = client.knowledge_bases.list()
kb = next((k for k in kbs if k.name == "my-kb"), None)
if not kb:
kb = client.knowledge_bases.create(name="my-kb")
print(f"✓ 知识库就绪: {kb.id}")
# 4. 添加文档
print("添加文档...")
doc = client.knowledge_bases.documents.create(
kb_id=kb.id,
file_id=file.id
)
doc.wait()
print(f"✓ 文档已索引: {doc.chunk_count} 个分块")
# 5. 搜索
print("执行搜索...")
results = client.knowledge_bases.search(
kb_id=kb.id,
query="合同期限",
top_k=3
)
print(f"✓ 找到 {len(results.chunks)} 个相关结果:")
for i, chunk in enumerate(results.chunks, 1):
print(f"\n结果 {i} (相似度: {chunk.score:.3f}):")
print(chunk.content[:200] + "...")
if __name__ == "__main__":
main()
使用 REST API¶
如果你不使用 Python,可以直接调用 REST API:
上传文件¶
curl -X POST https://api.unifiles.dev/v1/files \
-H "Authorization: Bearer sk_live_xxx" \
-F "file=@document.pdf"
提取内容¶
curl -X POST https://api.unifiles.dev/v1/extractions \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"file_id": "file_xxx"}'
搜索知识库¶
curl -X POST https://api.unifiles.dev/v1/knowledge-bases/kb_xxx/search \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"query": "搜索内容", "top_k": 5}'
与 LangChain 集成¶
from unifiles.integrations.langchain import UnifilesRetriever
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
# 创建 Retriever
retriever = UnifilesRetriever(
api_key="sk_live_xxx",
kb_id="kb_xxx",
top_k=5
)
# 创建 RAG Chain
llm = ChatOpenAI(model="gpt-4")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
# 提问
result = qa_chain.invoke({"query": "合同的违约金是多少?"})
print(result["result"])
下一步¶
-
了解核心概念
深入理解 Unifiles 的三层架构和设计理念
-
探索 API
学习 API 的完整功能和最佳实践
-
动手实践
通过渐进式教程掌握各种使用场景
-
API 参考
查阅完整的 API 文档和类型定义