PythonIDE Docs
中文
简体中文

foundation_models

设备端大模型文本生成(Foundation Models,iOS 26+)。

端侧文本生成(Apple Foundation Models,iOS 26+):对话、摘要、错误解释。

边界:需 iOS 26+ 且设备支持 Apple Intelligence 端侧模型。与云端 Agent 不同;带工具调度的助手请用 assistant

#模块概览

说明
导入import foundation_models
适合做什么本地摘要、代码解释、短问答
调用时机respond / summarize 放在按钮回调
推荐顺序is_available() → 选择 API → 传入文本
隐私推理在设备端完成,不经过本模块发网络请求

#快速开始

python
import foundation_models

if not foundation_models.is_available():
    print("Foundation Models 不可用")
else:
    answer = foundation_models.respond("用三句话介绍 Python")
    print(answer)

    summary = foundation_models.summarize("很长的文章正文……", max_sentences=3)
    print(summary)

解释 Python 报错:

python
import foundation_models

hint = foundation_models.explain_error(
    "NameError: name 'x' is not defined",
    code_snippet="print(x)",
)
print(hint)

#AppUI 示例

python
import appui
import foundation_models

state = appui.State(
    available="—",
    prompt="用一句话介绍 PythonIDE",
    output="—",
)


def refresh_available():
    state.available = "是" if foundation_models.is_available() else "否"


def ask_model():
    refresh_available()
    if state.available != "是":
        state.output = "Foundation Models 不可用(需 iOS 26+)"
        return

    try:
        state.output = foundation_models.respond(state.prompt)
    except foundation_models.FoundationModelsError as exc:
        state.output = str(exc)


def body():
    return appui.NavigationStack(
        appui.Form([
            appui.Section("提问", [
                appui.TextEditor(text=state.prompt).frame(min_height=80),
                appui.Button("生成回答", action=ask_model)
                .button_style("bordered_prominent"),
            ]),
            appui.Section("结果", [
                appui.LabeledContent("可用", value=state.available),
                appui.Text(state.output).foreground_color("secondaryLabel"),
            ]),
        ]).navigation_title("端侧模型")
    )


appui.run(body, state=state)

#API 参考

#速查

API作用
is_available()端侧模型是否可用 → bool
respond(prompt, instructions=None)自由问答 → str
summarize(text, max_sentences=3)文本摘要 → str
explain_error(error, code_snippet='')解释报错 → str
FoundationModelsError操作失败异常

#respond

python
text = foundation_models.respond(
    "总结这段日志的关键问题",
    instructions="回答要简短,用中文",
)

#summarize / explain_error

python
foundation_models.summarize(long_text, max_sentences=5)
foundation_models.explain_error("SyntaxError: invalid syntax", code_snippet="if True\nprint()")

#常见错误

错误写法后果修正
在低版本 iOS 调用is_available() 为 False检查系统版本与机型
body() 里自动生成每次刷新重复推理放进按钮回调
期望访问日历/照片等工具本模块无工具assistant
超长上下文一次传入可能截断或失败分段摘要

#相关文档

文档用途
assistant带内置设备工具的助手
translation文本翻译

#预期效果

运行示例后,界面应出现文档描述的目标结果;若与预期不符,先看「失败路径」并按返回值或日志排查。