Ollama对话脚本

import sys

import ollama

OLLAMA_HOST = "http://127.0.0.1:11434"

MODEL_NAME = "qwen3.5:2b"

try:

client = ollama.Client(host=OLLAMA_HOST)

client.show(MODEL_NAME)

except Exception as e:

print(f"连接失败: {e}")

sys.exit(1)

1. 严格保持线性的上下文结构,绝不在中间乱插数据

messages = \[\]

print("已对齐 Page Assist 优化参数。开始聊天:")

print("-" * 50)

while True:

try:

user_input = input("\n用户: ").strip()

if user_input.lower() in 'exit', 'quit': break

if not user_input: continue

messages.append({'role': 'user', 'content': user_input})

print("AI: ", end='', flush=True)

2. 显式传入 options 优化参数,对齐前端 WebUI 的标准配置

response_stream = client.chat(

model=MODEL_NAME,

messages=messages,

stream=True,

options={

"num_ctx": 4096, # 限制上下文大小,大幅提升响应速度

"low_vram": False, # 确保不向 CPU 妥协(如果显存够)

"temperature": 0.7 # 保持正常的发散度

}

)

full_response = ""

for chunk in response_stream:

content = chunk.message.content

if content:

print(content, end='', flush=True)

full_response += content

print()

messages.append({'role': 'assistant', 'content': full_response})

3. 严格的滑动窗口:超过限制时,必须两两成对裁剪,不能打破 user, assistant 的交替交叠

如果打破了交替,Ollama 缓存会当场报废,速度直接暴跌

if len(messages) > 10: # 保持最近 5 轮对话

messages = messages-10:

except KeyboardInterrupt:

print("\n退出")

break

except Exception as e:

print(f"\n错误: {e}")

break

相关推荐
夏天拐跑了西瓜8 小时前
一文入门LangChain:从框架认知到构建你的第一个AI Agent
python·langchain·conda·agent
魔猴疯猿8 小时前
从0到1用Python开发第一个智能体
人工智能·python·深度学习·神经网络·机器学习
xiaoqi019510 小时前
机器学习因子分析实战:从量化特征到可视化决策
人工智能·python·机器学习
Escalating_xu10 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
happylifetree10 小时前
Python14:核心语法-数据存储与运算-字符串定义
python
hhb_61810 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
小静AI工程实验室11 小时前
asyncio.Queue 有界队列实战:背压、task_done、join 与异常收尾
python
小凡geo11 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
Zhou14113611 小时前
SpringBoot_03_Web开发
前端·spring boot·python
weixin1997010801611 小时前
《1688物流API接口边界:logistics.trace.get 与 freight.template.list 的隐藏约束》(附Python源码)
windows·python·list