让大语言模型“感知世界”-通过ModelSensor 获取并传递日期、时间、位置等信息

现在本地部署的大模型,有可能有一个问题,就是经常是“真空中的模型”,不具备当前环境的“感知”,很难用于回答与本机或当下相关的问题。 针对这个情况,几个月前写了一个小工具ModelSensor[1],可以在本地收集日期、时间、位置(可选)、系统与运行环境等上下文,以结构化格式注入到提示词中,帮助 LLM 更好地理解当前环境并给出更贴近实际的回答,就算是一定程度地让大语言模型(LLM)“感知世界”了。

问题现状

即便是在线的,如果LLM 模型无法感知当前环境,那也会难以解决时效相关问题,比如有时候问他日期,他就会很呆呆了。

Image

Ollama下直接调用gpt-oss:20b,得到了一次正确的日期,但是星期不对。

Image

千问官方群的群友说这可能是“oss在系统提示词之上还有更高级别的openai prompt”,大概就是ollama调用的时候传递了基本信息。这其实和我之前的思路类似,可以获取系统信息并传递给ollama之类的模型。

思路设计

ModelSensor[1] 的思路挺简单的,基本流程如下:

1) 采集:从本地获取系统时间、时区、硬件、资源使用、网络与(可选)位置等上下文 2) 组织:将数据整理为 JSON 或字典(简版 brief / 全量 full) 3) 注入:将上下文作为“系统上下文”插入到提示词中一并发送给 LLM 4) 受控:通过参数控制采集范围、格式与隐私(如是否启用位置)

具体获取的信息包括:

•时间与时区:当前时间、UTC、星期、格式化时间戳  •系统与运行环境:OS、平台、Python 版本、工作目录、虚拟环境  •资源状态:CPU 使用率、内存、磁盘  •网络信息:网卡、默认网关、连接状态  •位置(可选):基于 IP 的国家/城市/经纬度(默认关闭,需显式开启)

注意哈,上面除了网络位置之外,其余的信息都是本地获取,所有采集均在本地完成;除非启用位置解析,否则不会进行外部传输。

安装运行

安装很简单,直接pip即可安装:

pip install modelsensor

Python下可以通过以下方式获取系统时间、时区、位置等信息,然后通过 to_json 方法将数据转换为 JSON 格式:

from modelsensor import ModelSensorsensor = ModelSensor()data = sensor.collect_all_data(include_location=False)  # 位置默认关闭print(sensor.to_json(indent=2, mode="brief"))

得到的输出是类似下面这样:

{  "time": {    "date": "2025-08-18",    "time": "11:32:01"  }}

还有更简单的to_dict()方法:

from modelsensor import ModelSensorsensor = ModelSensor()data = sensor.collect_all_data(include_location=False)  # 位置默认关闭print(sensor.to_dict(mode="brief"))```
得到的输出是类似下面这样:```bash{'time': {'date': '2025-08-18', 'time': '11:37:06'}}

与 Ollama 集成也很简单,只需要在调用 Ollama 的时候传递 system_context 参数即可,如下:

import ollamafrom modelsensor import ModelSensor# Get system informationsensor = ModelSensor()system_context = sensor.to_json(include_location=True)# Create enhanced promptprompt = f"""System Context:{system_context}   ...:User Question: 今天几号?"""# Send to Ollamaresponse = ollama.chat(model='qwen3:0.6b', messages=[    {'role': 'user', 'content': prompt}])print(response['message']['content'])

得到的输出是类似下面这样:

<think>好的,用户问“今天几号?”,我需要根据系统提供的上下文来回答。系统里的时间是2025年8月18日,11:33:18,所以今天应该是2025年8月18日。不过要确认一下用户问的是当前日期,还是系统设定的日期。不过根据提供的上下文,时间是明确的,所以应该直接回答今天是2025年8月18日。另外,用户可能想知道今天的日期,所以需要简洁明了地回复,不需要多余的解释。确保回答准确无误,符合系统提供的信息。</think>
今天是2025年8月18日。

References

[1] ModelSensor: https://github.com/cycleuser/ModelSensor

预览时标签不可点

Close

更多

Name cleared

赞赏二维码微信扫一扫赞赏作者

Like the AuthorOther Amount

赞赏后展示我的头像

作品

暂无作品

Like the Author

Other Amount

¥

最低赞赏 ¥0

OK

Back

Other Amount

更多

赞赏金额

¥

最低赞赏 ¥0

1

2

3

4

5

6

7

8

9

0

.

大语言模型 · 目录

大语言模型

上一篇本地大模型谁更强?gpt-oss:20b还是qwen3:30?借助OllamaModelTester进行批量测试!下一篇真正的生产力-本地大模型编排工具n8n调用局域网上的Ollama模型

Close

更多

搜索「」网络结果

Close

调整当前正文文字大小

更多

100%