](https://mseep.ai/app/bodiecoding-structsure)
结构
一个简单、可靠的库,用于从LLM中获取具有自校正功能的结构化JSON输出。
注意:此存储库是社区版(CE)。专业功能(云提供商、云保存/历史记录、托管API)在存在许可证时被关闭并解锁。
安装
- 确保你有Python 3.8+
- 在可编辑模式下本地安装:
pip install -e .可选后端(通过额外功能推荐):
- 当地(Ollama):
pip install -e .[ollama]并安装一个类似的模型ollama pull llama3 - OpenAI:
pip install -e .[openai]
示例
- 本地任务提取(无API密钥):
python examples/local_tasks_demo.py - 本地简历提取(无API密钥):
python examples/resume_extraction_demo.py - 混合简单用法(自动检测提供程序):请参阅
examples/simple_usage.py
模式设计器(GUI)
设计模式、提示模型,并在本地或云中获得具有自校正功能的有效JSON。
- 安装附加组件:
pip install -e .[streamlit,ollama] - 运行:
streamlit run structsure/schema_designer_app.py - 特征:
- 定义字段,请参阅实时JSON模式 - 拆分输入:指令、源文本、JSON示例 - 选择后端(Ollama/OpenAI)、型号、重试次数 - 2列或3列布局,带实时输出
- 在CE中,只有Ollama供应商可用。设置环境变量
STRUCTSURE_LICENSE=...解锁专业版功能(或安装私人版structsure_pro包装(如有)。
选择本地模型(与Ollama一起)
Ollama是本地运行时;你仍然选择一个模型。良好的默认值:
- 微小/快速(CPU友好):
gemma2:2b,phi3:mini(占用空间最小;适用于简单模式) - 中等尺寸(精度更高):
mistral:7b,qwen2.5:7b,gemma2:7b - 平衡默认值:
llama3(8B指示)
拉模型(示例):
ollama pull llama3
ollama pull gemma2:2b
ollama pull phi3:mini
ollama pull mistral:7b
ollama pull qwen2.5:7b然后跑步 --provider ollama --model 或者在示例中设置模型。
命令行用法
安装所需的附加组件(示例:仅限本地):
pip install -e .[ollama]基本用法(自动检测提供者:OpenAI,如果 OPENAI_API_KEY 集,否则Ollama):
structsure "Extract a bullet list of tasks from: ..."指定提供程序/型号并重试:
structsure "Extract JSON for ..." --provider ollama --model llama3 --retries 3使用输入文件和JSON模式文件(由Pydantic生成):
structsure @prompt.txt --schema schema.jsonMCP 服务器
额外安装MCP(和后端):
pip install -e .[mcp,ollama]启动服务器:
structsure-mcp外露工具: generate_structured
- 参数:
prompt(str),schema_json(str,可选),model(可选),provider(可选;“openai”或“ollama”),max_retries(int) - 自动检测提供程序并默认为
llama3(Ollama)或gpt-4o(OpenAI)未提供时
快速示例
import os
from pydantic import BaseModel, Field
from structsure import generate
provider = "openai" if os.environ.get("OPENAI_API_KEY") else "ollama"
client = None
if provider == "openai":
from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"]) # or OpenAI()
class UserProfile(BaseModel):
name: str
age: int
is_active: bool
email: str
prompt = "Create a profile for John Doe..."
user_profile = generate(
client=client,
model=("gpt-4o" if provider == "openai" else "llama3"),
response_model=UserProfile,
prompt=prompt,
provider=provider,
)
print(user_profile.model_dump_json(indent=2))