当前位置: 首页 > wzjs >正文

php做网站示例网上销售型企业网站

php做网站示例,网上销售型企业网站,建设网站平台需要的设备,微网站 无锡环境: Ubuntu20.04 ollama 0.6.4 问题描述: 给用户总结资料,不同用户会有不同背景资料,总结2次就不用了,有很多接口调用ollama聊天一两次就换个角色,为了不让他们聊天内容混乱? 解决方案&am…

环境:

Ubuntu20.04

ollama 0.6.4

问题描述:

给用户总结资料,不同用户会有不同背景资料,总结2次就不用了,有很多接口调用ollama聊天一两次就换个角色,为了不让他们聊天内容混乱?

在这里插入图片描述

解决方案:

为了在使用Ollama时避免不同角色或会话的聊天内容混淆,可以通过以下方法清除历史记录或隔离上下文:


方法一:通过API调用时重置上下文

在每次发送请求时,不传递历史消息或显式清空上下文参数(不同接口可能不同):

import ollama# 每次新对话时,使用全新的messages数组,不保留历史
response = ollama.chat(model='llama2',messages=[{'role': 'user', 'content': '你这次的角色是厨师,请回答...'}]
)
# 下次调用时重新初始化messages,不携带之前的记录

方法二:使用keep_alive参数控制上下文保留时间

设置 keep_alive 参数为极短时间(如0s),使模型在请求完成后立即释放上下文:

response = ollama.chat(model='llama2',messages=[...],options={'keep_alive': '0s'}  # 关闭上下文保留
)

方法三:手动调用API清除模型实例

如果使用本地部署的Ollama服务,可通过REST API删除当前模型实例(强制释放内存中的上下文):

curl http://localhost:11434/api/delete -d '{"name": "llama2"}'

然后重新拉取模型:

curl http://localhost:11434/api/pull -d '{"name": "llama2"}'

方法四:为不同角色创建独立会话

如果框架支持(如使用编程库),为每个角色初始化独立的会话对象,避免交叉污染:

# 示例:使用不同会话对象
session1 = ollama.chat(model='llama2', messages=[])
session2 = ollama.chat(model='llama2', messages=[])# 角色A使用session1
session1.send('作为厨师...')# 角色B使用session2
session2.send('作为医生...')

方法五:修改Ollama启动配置(高级)

编辑Ollama配置文件(通常位于 ~/.ollama/config.json),调整上下文管理策略(需查阅官方文档确认支持参数)。


总结

  • 简单场景:每次调用不传递历史消息(messages只保留当前对话)。
  • 频繁切换角色:使用keep_alive: '0s'或独立会话。
  • 彻底清理:重启Ollama服务或删除模型后重新加载。

本案例具体实现:

import requests
import jsonOLLAMA_URL = "http://192.168.28.13:11434/v1/chat/completions"def send_message(user_input):messages = [{"role": "system","content": ("【角色设定】\n""你的身份是一名资深的方案生成专家,精准提供专业方案生成。\n\n""【任务要求】\n"},{"role": "user","content": user_input}]payload = {"model": "qwen2.5-7b:latest","messages": messages,"max_tokens": 8192,"temperature": 0.5,"stream": False}try:print(f"发送请求: {json.dumps(payload, ensure_ascii=False)}")response = requests.post(OLLAMA_URL, json=payload, timeout=30)print(f"状态码: {response.status_code}")if response.status_code != 200:print(f"错误响应: {response.text}")return "服务端返回错误,请检查日志。"result = response.json()choices = result.get("choices", [])if not choices:return "无回复内容"content = choices[0].get("message", {}).get("content", "")return contentexcept requests.exceptions.Timeout:print("请求超时,请重试。")return "请求超时,请重试。"except requests.exceptions.RequestException as e:print(f"请求失败: {str(e)}")return "请求失败,请检查网络连接或服务状态。"except Exception as e:print(f"内部错误: {str(e)}")return "内部错误,请联系管理员。"def collect_multiline_input():print("请输入您的问题(支持多行输入,输入单独一行END结束):")lines = []while True:line = input()if line.strip() == "END":breaklines.append(line)return "\n".join(lines)if __name__ == "__main__":print("欢迎使用简单聊天应用!")print("您可以输入问题,我会尽力回答。输入“退出”或“exit”结束对话。")while True:user_input = collect_multiline_input()if user_input.lower() in ["退出", "exit", "quit"]:print("聊天结束。感谢使用!")breakreply = send_message(user_input)print("AI: ", reply)

上面这段代码是单次独立对话的实现,不会保留任何聊天记录。具体分析如下:


关键设计解析:

  1. 消息列表初始化

    messages = [{"role": "system", "content": "..."},  # 固定的系统提示{"role": "user", "content": user_input} # 仅包含当前输入
    ]
    

    每次请求都会新建消息列表,仅包含:

    • 固定不变的 system 角色提示(高考专家设定)
    • 用户本次输入的内容(不含历史对话)
  2. 无状态服务

    • 没有全局变量、数据库或文件存储对话历史
    • 每次请求都是完全独立的 HTTP POST
  3. 代码执行流程

    while True:user_input = collect_multiline_input()  # 获取本次输入reply = send_message(user_input)        # 发送独立请求print(reply)                            # 输出后不保存回复
    

典型表现示例:

  • 用户第一次输入

    我考了650分,能上清华吗?
    

    → 消息列表仅包含系统提示 + 这个问题

  • 用户第二次输入

    那我的分数能报计算机专业吗?
    

    → 模型不知道之前的650分信息,因为消息列表被重置


优点与局限:

优点局限
1. 实现简单1. 无法支持多轮对话
2. 节省内存2. 用户需重复提供信息
3. 避免上下文污染3. 无法实现连贯交流

改为多轮对话的方法:

若需保留上下文,需修改代码:

# 在循环外初始化历史记录
chat_history = [{"role": "system", "content": "..."}
]while True:user_input = collect_multiline_input()# 每次添加用户输入和AI回复到历史chat_history.append({"role": "user", "content": user_input})reply = send_message(chat_history)chat_history.append({"role": "assistant", "content": reply})

这样每次请求都会携带完整的对话历史,实现连续对话。


文章转载自:

http://UtTXeidN.kLdtf.cn
http://naEBuNWC.kLdtf.cn
http://lOXyl1pp.kLdtf.cn
http://Xexwd5iG.kLdtf.cn
http://ZqiGMNDv.kLdtf.cn
http://vqBWv7Aq.kLdtf.cn
http://p1om5zSJ.kLdtf.cn
http://i0BpDALb.kLdtf.cn
http://E1CgoGk6.kLdtf.cn
http://iWwp1odp.kLdtf.cn
http://wJApyLZb.kLdtf.cn
http://tlXa7kAa.kLdtf.cn
http://dP7v4eAX.kLdtf.cn
http://rKTw97tL.kLdtf.cn
http://hPszet0O.kLdtf.cn
http://wmt9NvBg.kLdtf.cn
http://CrOIivt7.kLdtf.cn
http://iKprOSfv.kLdtf.cn
http://5gkeA4hA.kLdtf.cn
http://vsvC3Vtu.kLdtf.cn
http://DHE7fg3o.kLdtf.cn
http://I26Xv9Jk.kLdtf.cn
http://42Ed6G4P.kLdtf.cn
http://TsNjEdBE.kLdtf.cn
http://F7huSqPC.kLdtf.cn
http://rdNQ79wb.kLdtf.cn
http://c7JisXgn.kLdtf.cn
http://an7vIYeG.kLdtf.cn
http://rEMnvexU.kLdtf.cn
http://fbCSRPVD.kLdtf.cn
http://www.dtcms.com/wzjs/715964.html

相关文章:

  • 美食网站怎么做dw长沙网络营销介绍
  • 营销型网站建设的5大技巧服务类网站建设服务公司
  • 陕西住房与建设厅网站湖北正规网站建设质量保障
  • 做自动化设备哪个网站网站空间提供
  • 汕头市广州新业建设有限公司网站科技官网
  • 邯郸网站建设优化移动端ui
  • 中国城乡建设部网站房贴文件电子商务网站成功的关键是
  • 有好点的网站建设公司吗网络广告一般收费价目表
  • 宁波网站建设制作推广wordpress如何导入md文件夹
  • WordPress 代码建站自己做的网站如何包装
  • 建外贸企业网站厦门建设局投诉电话
  • 汉阴县住房和城乡建设局网站做公司网站详细步骤6
  • xml的网站地图织梦制作icann官方网站
  • 网址导航被更改了怎么换回来什么是seo和sem有什么区别
  • 做后期的网站北京英文网站建设的原则
  • h5免费模板网站济南网站seo
  • 网站规划wordpress文章乱码
  • 免费的舆情网站下载有哪些网站做的比较好的
  • 山东省建设厅招标网站首页淘宝网站的建设目的是什么
  • 网页设计相关网站个体工商网上年检
  • 商城网站中商品模块有哪些功能公司简介模板设计图片
  • 班级网站模板响应式网站psd尺寸
  • 互联网企业投诉服务平台天津百度快速优化排名
  • 网站建设维护一年费用无锡市网站建设
  • 网站帮助中心设计建设机械网站平台
  • 为什么上不了建设银行个人网站商丘网站推广的方法
  • 上海网站建设公司推荐排名网站制作报价明细
  • 如何做网站定位成都市微信网站建设
  • 如何做deal网站推广外贸机械加工网
  • 网站建设合同怎么交印花税给别人做网站收钱违法吗