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

某些网站域名解析错误织梦模板更新网站

某些网站域名解析错误,织梦模板更新网站,做网站的客户多吗,北京网站设计制作多少钱Streamlit是一个开源的Python库#xff0c;利用Streamlit可以快速构建机器学习应用的用户界面。 本文主要探讨如何使用Streamlit构建大模型外部知识检索的AI问答可视化界面。 我们先构建了外部知识检索接口#xff0c;然后让大模型根据检索返回的结果作为上下文来回答问题。…Streamlit是一个开源的Python库利用Streamlit可以快速构建机器学习应用的用户界面。 本文主要探讨如何使用Streamlit构建大模型外部知识检索的AI问答可视化界面。 我们先构建了外部知识检索接口然后让大模型根据检索返回的结果作为上下文来回答问题。 Streamlit-使用说明 下面简单介绍下Streamlit的安装和一些用到的组件。 Streamlit安装 pip install streamlitStreamlit启动 streamlit run xxx.py --server.port 8888说明 如果不指定端口默认使用8501如果启动多个streamlit端口依次升序85028503…。设置server.port可指定端口。streamlit启动后将会给出两个链接Local URL和Network URL。 相关组件 import streamlit as stst.header streamlit.header(body) body字符串要显示的文本。 st.markdown st.markdown(body, unsafe_allow_htmlFalse) body要显示的markdown文本字符串。 unsafe_allow_html 是否允许出现html标签布尔值默认false表示所有的html标签都将转义。 注意这是一个临时特性在将来可能取消。 st.write st.write(*args, **kwargs) *args一个或多个要显示的对象参数。 unsafe_allow_html 是否允许不安全的HTML标签布尔类型默认值false。 st.button st.button(label, keyNone) label按钮标题字符串。 key按钮组件的键可选。如果未设置的话streamlit将自动生成一个唯一键。 st.radio st.radio(label, options, index0, format_funcclass str, keyNone) label单选框文本字符串。 options选项列表可以是以下类型 list tuple numpy.ndarray pandas.Series index选中项的序号整数。 format_func选项文本的显示格式化函数。 key组件ID当未设置时streamlit会自动生成。 st.sidebar st.slider(label, min_valueNone, max_valueNone, valueNone, stepNone, formatNone, keyNone) label说明文本字符串。 min_value允许的最小值默认值0或0.0。 max_value允许的最大值默认值0或0.0。 value当前值默认值为min_value。 step步长默认值为1或0.01。 format数字显示格式字符串 。 key组件ID。 st.empty st.empty() 填充占位符。 st.columns 插入并排排列的容器。 st.columns(spec, *, gapsmall) spec: 控制要插入的列数和宽度。 gap: 列之间的间隙大小。 AI问答可视化代码 这里只涉及到构建AI问答界面的代码不涉及到外部知识检索。 导入packages import streamlit as st import requests import json import sys,osimport torch import torch.nn as nn from dataclasses import dataclass, asdict from typing import List, Optional, Callable import copy import warnings from transformers import AutoModelForCausalLM, AutoTokenizer from transformers.generation.utils import GenerationConfig from peft import PeftModel from chatglm.modeling_chatglm import ChatGLMForConditionalGeneration外部知识检索 def get_reference(user_query,use_top_kTrue,top_k10,use_similar_scoreTrue,threshold0.7):外部知识检索的方式使用top_k或者similar_score控制检索返回值。# 设置检索接口SERVICE_ADD ref_list []user_query user_query.strip()input_data {}if use_top_k:input_data[query] user_queryinput_data[topk] top_kresult requests.post(SERVICE_ADD, jsoninput_data)res_json json.loads(result.text)for i in range(len(res_json[answer])):ref res_json[answer][i]ref_list.append(ref)elif use_similar_score:input_data[query] user_queryinput_data[topk] top_kresult requests.post(SERVICE_ADD, jsoninput_data)res_json json.loads(result.text)for i in range(len(res_json[answer])):maxscore res_json[answer][i][prob]if maxscore threshold: ref res_json[answer][i]ref_list.append(ref)return ref_list参数设置 # 设置清除按钮 def on_btn_click():del st.session_state.messages# 设置参数 def set_config():# 设置基本参数base_config {model_name:,use_ref:,use_topk:,top_k:,use_similar_score:,max_similar_score:}# 设置模型参数model_config {top_k:,top_p:,temperature:,max_length:,do_sample:}# 左边栏设置with st.sidebar:model_name st.radio(模型选择,[baichuan2-13B-chat, qwen-14B-chat,chatglm-6B,chatglm3-6B],index0,)base_config[model_name] model_nameset_ref st.radio(是否使用外部知识库,[是,否],index0,)base_config[use_ref] set_refif set_ref是:set_topk_score st.radio(设置选择参考文献的方式,[use_topk,use_similar_score],index0,)if set_topk_scoreuse_topk:set_topk st.slider(Top_K, 1, 10, 5,step1)base_config[top_k] set_topkbase_config[use_topk] Truebase_config[use_similar_score] Falseset_score st.empty()elif set_topk_scoreuse_similar_score:set_score st.slider(Max_Similar_Score,0.00,1.00,0.70,step0.01)base_config[max_similar_score] set_scorebase_config[use_similar_score] Truebase_config[use_topk] Falseset_topk st.empty()else:set_topk_score st.empty()set_topk st.empty()set_score st.empty()sample st.radio(Do Sample, (True, False))max_length st.slider(Max Length, min_value64, max_value2048, value1024)top_p st.slider(Top P, 0.0, 1.0, 0.7, step0.01)temperature st.slider(Temperature, 0.0, 2.0, 0.05, step0.01)st.button(Clear Chat History, on_clickon_btn_click)# 设置模型参数model_config[top_p]top_pmodel_config[do_sample]samplemodel_config[max_length]max_lengthmodel_config[temperature]temperaturereturn base_config,model_config设置模型输入格式 # 设置不同模型的输入格式 def set_input_format(model_name):# [baichuan2-13B-chat, baichuan2-7B-chat, qwen-14B-chat,chatglm-6B,chatglm3-6B]if model_namebaichuan2-13B-chat or model_namebaichuan2-7B-chat:input_format reserved_106{{query}}reserved_107elif model_nameqwen-14B-chat:input_format |im_start|system 你是一个乐于助人的助手。|im_end||im_start|user{{query}}|im_end||im_start|assistantelif model_namechatglm-6B:input_format {{query}}elif model_namechatglm3-6B:input_format |system|You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the users instructions carefully. Respond using markdown.|user|{{query}}|assistant|return input_format加载模型 # 加载模型和分词器 st.cache_resource def load_model(model_name):if model_namebaichuan2-13B-chat:model AutoModelForCausalLM.from_pretrained(baichuan-inc/Baichuan2-13B-Chat,trust_remote_codeTrue)lora_path tokenizer AutoTokenizer.from_pretrained(baichuan-inc/Baichuan2-13B-Chat,trust_remote_codeTrue)model.to(cuda:0)elif model_nameqwen-14B-chat:model AutoModelForCausalLM.from_pretrained(Qwen/Qwen-14B-Chat,trust_remote_codeTrue)lora_path tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen-14B-Chat,trust_remote_codeTrue)model.to(cuda:1)elif model_namechatglm-6B:model ChatGLMForConditionalGeneration.from_pretrained(THUDM/chatglm-6b,trust_remote_codeTrue)lora_path tokenizer AutoTokenizer.from_pretrained(THUDM/chatglm-6b,trust_remote_codeTrue)model.to(cuda:2)elif model_namechatglm3-6B:model AutoModelForCausalLM.from_pretrained(THUDM/chatglm3-6b,trust_remote_codeTrue)lora_path tokenizer AutoTokenizer.from_pretrained(THUDM/chatglm3-6b,trust_remote_codeTrue)model.to(cuda:3)# 加载lora包model PeftModel.from_pretrained(model,lora_path)return model,tokenizer推理参数设置 def llm_chat(model_name,model,tokenizer,model_config,query):response top_k model_config[top_k]top_p model_config[top_p]max_length model_config[max_length]do_sample model_config[do_sample]temperature model_config[temperature]if model_namebaichuan2-13B-chat or model_namebaichuan-7B-chat:messages []messages.append({role: user, content: query})response model.chat(tokenizer, messages)elif model_nameqwen-14B-chat:response, history model.chat(tokenizer, query, historyNone, top_ptop_p, max_new_tokensmax_length, do_sampledo_sample, temperaturetemperature)elif model_namechatglm-6B:response, history model.chat(tokenizer, query, historyNone, top_ptop_p, max_lengthmax_length, do_sampledo_sample, temperaturetemperature)elif model_namechatglm3-6B:response, history model.chat(tokenizer, query, top_ptop_p, max_lengthmax_length, do_sampledo_sample, temperaturetemperature)return response主程序 if __name____main__:#对话的图标user_avator ‍robot_avator if messages not in st.session_state:st.session_state.messages []torch.cuda.empty_cache()base_config,model_config set_config()model_name base_config[model_name]use_ref base_config[use_ref]model,tokenizer load_model(model_namemodel_name)input_format set_input_format(model_namemodel_name)header_text fLarge Language Model {model_name}st.header(header_text)if use_ref是:col1, col2 st.columns([5, 3]) with col1:for message in st.session_state.messages:with st.chat_message(message[role], avatarmessage.get(avatar)):st.markdown(message[content])if user_query : st.chat_input(请输入内容...):with col1: with st.chat_message(user, avataruser_avator):st.markdown(user_query)st.session_state.messages.append({role: user, content: user_query, avatar: user_avator})with st.chat_message(robot, avatarrobot_avator):message_placeholder st.empty()use_top_k base_config[use_topk]if use_top_k:top_k base_config[top_k]use_similar_score base_config[use_similar_score]ref_list get_reference(user_query,use_top_kuse_top_k,top_ktop_k,use_similar_scoreuse_similar_score) else:use_top_k base_config[use_topk]use_similar_score base_config[use_similar_score]threshold base_config[max_similar_score]ref_list get_reference(user_query,use_top_kuse_top_k,use_similar_scoreuse_similar_score,thresholdthreshold)if ref_list:context for ref in ref_list:context contextref[para]\ncontext context.strip(\n)query f上下文【{context} 】只能根据提供的上下文信息合理回答下面的问题不允许编造内容不允许回答无关内容。问题【{user_query}】else:query user_queryquery input_format.replace({{query}},query)print(输入,query)max_len model_config[max_length]if len(query)max_len:cur_response f字数超过{max_len}请调整max_length。else:cur_response llm_chat(model_name,model,tokenizer,model_config,query)fs.write(f输入{query})fs.write(\n)fs.write(f输出{cur_response})fs.write(\n)sys.stdout.flush()if len(query)max_len:if ref_list:cur_response f大模型将根据外部知识库回答您的问题{cur_response}else:cur_response f大模型将根据预训练时的知识回答您的问题存在编造事实的可能性。因此以下输出仅供参考{cur_response}message_placeholder.markdown(cur_response)st.session_state.messages.append({role: robot, content: cur_response, avatar: robot_avator})with col2:ref_list get_reference(user_query)if ref_list:for ref in ref_list:ques ref[ques]answer ref[para]score ref[prob]question f{ques}---score: {score}with st.expander(question):st.write(answer)else:for message in st.session_state.messages:with st.chat_message(message[role], avatarmessage.get(avatar)):st.markdown(message[content])if user_query : st.chat_input(请输入内容...):with st.chat_message(user, avataruser_avator):st.markdown(user_query)st.session_state.messages.append({role: user, content: user_query, avatar: user_avator})with st.chat_message(robot, avatarrobot_avator):message_placeholder st.empty()query input_format.replace({{query}},user_query)max_len model_config[max_length]if len(query)max_len:cur_response f字数超过{max_len}请调整max_length。else:cur_response llm_chat(model_name,model,tokenizer,model_config,query)fs.write(f输入{query})fs.write(\n)fs.write(f输出{cur_response})fs.write(\n)sys.stdout.flush()cur_response f大模型将根据预训练时的知识回答您的问题存在编造事实的可能性。因此以下输出仅供参考{cur_response}message_placeholder.markdown(cur_response)st.session_state.messages.append({role: robot, content: cur_response, avatar: robot_avator}) 可视化界面展示 总结 Streamlit工具使用非常方便说明文档清晰。 这个可视化界面集成了多个大模型外部知识检索同时可以在线调整模型参数使用方便。 完整代码https://github.com/hjandlm/Streamlit_LLM_QA 参考 [1] https://docs.streamlit.io/ [2] http://cw.hubwiz.com/card/c/streamlit-manual/ [3] https://github.com/hiyouga/LLaMA-Factory/tree/9093cb1a2e16d1a7fde5abdd15c2527033e33143
http://www.pierceye.com/news/943622/

相关文章:

  • 有帮忙做儿童房设计的网站吗东莞横沥网站制作
  • 国外网站模板欣赏WordPress 编辑器修改默认字号
  • 厦门同安网站建设视频购物网站开发方案
  • 什么是建设网站的主题兼职做问卷调查的网站
  • 装饰网站建设软件下载公司旅游视频网站模板免费下载
  • aws网站建设个体户做网站去哪里做
  • 用四字成语做网站域名好吗宁波网站推广专业服务
  • 深圳网站建设公司是网络推广网上营销
  • 网站视频站建设教程和仿qq商城版淘宝客网站源码模板+带程序后台文章dede织梦企业程序
  • 温州红酒网站建设长沙移动网站建设
  • 如何制作网站?企业网站制作步骤
  • 桓台县旅游网站建设购物网站建设技术难点
  • 单页网站推广网站qq链接怎么做
  • wordpress仿站步骤平乡网站建设
  • 青岛高端网站建设公司新网站seo技术
  • 手机网站后台甘肃网络推广技巧
  • 做co网站阿里云建站方案
  • 如何做网站首页优化怎么查网站点击量
  • 北京网站制作百度推广潜江资讯网二手房出售
  • 北京建网站软件深圳企业网站
  • 网站关键词互点备案网站简介怎么写
  • 网站建设报告书范文哈尔滨网站公司哪家好
  • 景观毕业设计作品网站公司网站销售平台建设费分录
  • 品牌网站建设还来大蝌蚪华为手机WordPress
  • 东莞制作企业网站公司网站营销活动页面制作
  • 有中文网站 怎么做英文网站企业网站建设 价格
  • 网络游戏网站开发建设工程施工合同样本
  • 陕西网站制作公司泸州中泸集团建设有限公司网站
  • 营销型网站建设的概念电子商务公司最低注册资本
  • 计划书网站推广的目录怎么做太原便宜做网站的公司哪家好