def get_response_from_llama2(question:str):llm = QianfanLLMEndpoint(model="Qianfan-Chinese-Llama-2-7B")template = """问题: {question}回答: 请一步一步思考 , 然后回答."""prompt = PromptTemplate(template=template, input_variables=["question"])llm_chain = LLMChain(prompt=prompt, llm=llm)response = llm_chain.run(question)return response该函数使用了QianfanLLMEndpoint类来实例化一个名为llm的大语言模型对象,模型名称为Qianfan-Chinese-Llama-2-7B 。其余部分与之前的get_response_from_gpt_4o函数相同,包括模板的定义、PromptTemplate和LLMChain的创建及运行 。
最后,是调用gpt-3.5-turbo模型 , 代码如下:
def get_response_from_gpt(question:str):llm = ChatOpenAI(model="gpt-3.5-turbo",base_url="https://api.chatanywhere.tech/v1")template = """问题: {question}回答: 请一步一步思考,然后回答."""prompt = PromptTemplate(template=template, input_variables=["question"])llm_chain = LLMChain(prompt=prompt, llm=llm)response = llm_chain.run(question)return response需要说明的是 , 由于调用了多个平台的大模型,因此需要预先配置多平台模型访问的Key,可以通过创建.env 文件定义这些Key 。可以在程序相同的目录下创建.env 文件,文件内容如下:
OPENAI_API_KEY=sk-3M3Cg1uLVDS7nXXXkFSlNV0Ts1CamgSPQIANFAN_AK=Y5DvSDyyAZKXXXHu719rPQIANFAN_SK=CKsfjtXawcjsg1XXXU3VwpACgZdorIDASHSCOPE_API_KEY=sk-f93952eXXX4b3b65f0906a1e0e7`.env` 文件用于存储应用程序的环境变量,包括访问API的密钥和其他配置参数 。这些变量提供了应用程序在不同平台和服务之间进行交互所需的认证信息和配置 。文件中包含多个API密钥和配置参数,用于不同的服务提供商:
- OpenAI 密钥 (`OPENAI_API_KEY`):用于访问OpenAI提供的服务 , 例如GPT-4o模型 。
- 百度千帆密钥 (`QIANFAN_AK` 和 `QIANFAN_SK`):用于验证和访问百度千帆平台的服务 。
- 阿里灵积密钥 (`DASHSCOPE_API_KEY`):用于验证和访问阿里灵积(Dashscope)平台的服务 。
下面来看看代码的实现,如下:
# 定义模型列表models = ["Qianfan-Chinese-Llama-2-7B", "gpt-3.5-turbo", "qwen-plus","gpt-4o"]# 创建一个下拉框,用户可以从中选择一个模型selected_model = st.selectbox("请选择一个大模型:", models)# 显示所选模型# st.write(f"你现在选择了 {selected_model} 大模型")st.markdown(f"你现在选择了 <span style='color:red; font-weight:bold;'>{selected_model}</span> 大模型", unsafe_allow_html=True)# 创建文本输入框让用户输入问题user_question = st.text_input("请输入你的问题:")# 创建一个发送按钮if st.button("发送"):# 根据所选模型调用对应的函数if selected_model == "Qianfan-Chinese-Llama-2-7B":response = get_response_from_llama2(user_question)elif selected_model == "gpt-3.5-turbo":response = get_response_from_gpt(user_question)elif selected_model == "qwen-plus":response = get_response_from_qwen(user_question)elif selected_model == "gpt-4o":response = get_response_from_gpt_4o(user_question)else:response = "未知模型,请重新选择 。"# 确保LaTeX公式用双美元符号包围 , 并正确处理反斜杠response_with_latex = response.replace("\(", "$$").replace("\)", "$$")response_with_latex = response_with_latex.replace("[", "$$").replace("]", "$$")# 显示返回的结果st.markdown(response_with_latex, unsafe_allow_html=True)这些代码内容与Web 交互息息相关,我们来逐一解释如下:(1) 定义模型列表和下拉框
models = ["Qianfan-Chinese-Llama-2-7B", "gpt-3.5-turbo", "qwen-plus", "gpt-4o"]selected_model = st.selectbox("请选择一个大模型:", models)定义了一个包含模型名称的列表,命名为models,其中包括四个模型:Qianfan-Chinese-Llama-2-7B , gpt-3.5-turbo , qwen-plus , 和gpt-4o 。在下拉框选择的时候 , 会用到这个列表的信息 。创建一个下拉框 , 用户可以从中选择一个模型 。使用Streamlit的selectbox函数创建了一个下拉框,供用户选择模型 。selectbox的第一个参数是提示文本,第二个参数是可供选择的选项列表 。用户选择的模型存储在变量selected_model中 。
推荐阅读
- 类人速度超快语音响应!OpenAI推出新旗舰模型GPT-4o,图文音频手机AI搞定
- ChatGPT-4o,OpenAI的一小步,人类「AI助理」的一大步
- 远离“造神”陷阱,官媒发文辟谣,揭开53岁刀郎的“真实现状”
- 从戏里走到戏外:赵玉田刘英的爱情之路,如何跨越曾经的伤痛?
- 演员吴冕:我这辈子最正确的决定,就是跨越两千多里嫁给初恋丈夫!
- 黄渤没说错!走红1年后,口碑暴跌的张颂文“真实现状”暴露无遗
- 月均100+品牌官宣代言人,谁能真正实现有效明星营销?
- 37岁舒畅现状:长得好看,演技在线却不火,直播带货实现财富自由
- 组合在走下坡路,她却选择续约?她能够实现翻盘吗?
- 演员吴冕:我这辈子最正确的决定,就是跨越两千多里嫁给初恋丈夫
