百度:文心千帆 网页搭建和示例测评

文章目录

    • 官方文档
    • 代码示例
      • token获取
      • 流式回答
      • 官网完整示例
    • 制作一个网页端

官方文档

https://cloud.baidu.com/doc/WENXINWORKSHOP/s/flfmc9do2

按照这个操作进行创建一个应用:
在这里插入图片描述

代码示例

token获取


# 填充API Key与Secret Key
import requests
import jsondef main():url = "https://aip.baidubce.com/oauth/2.0/token?client_id=【API Key】&client_secret=【Secret Key】&grant_type=client_credentials"payload = json.dumps("")headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)return response.json().get("access_token")if __name__ == '__main__':access_token = main()print(access_token)

流式回答


import requests
import jsondef get_access_token():"""使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key"""url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"payload = json.dumps("")headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)return response.json().get("access_token")def main():url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/bloomz_7b1?access_token=" + get_access_token()payload = json.dumps({"messages": [{"role": "user","content": "给我推荐一些自驾游路线"}],"stream": True})headers = {'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)print(response.text)if __name__ == '__main__':main()

官网完整示例

# coding=gbkimport requests
import jsondef get_access_token():"""使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key"""url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"payload = json.dumps("")headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)return response.json().get("access_token")def chat():url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/bloomz_7b1?access_token=" + get_access_token()payload = json.dumps({"messages": [{"role": "user","content": "鲁迅和周树人是同一个人吗?"}],"stream": True})headers = {'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)print(response.text)if __name__ == '__main__':chat()

回答如下:

data: {"id":"as-8pi6hewpi6","object":"chat.completion","created":1690278115,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"不是。鲁迅和周树人虽然都是著名的文学家,但他们是不同的人。鲁迅是现代文学史上的重要人物,他的作品具有思想性和艺术性,代表作品有《狂人日记》、《阿Q正传》、《","need_clear_history":false,"usage":{"prompt_tokens":12,"completion_tokens":66,"total_tokens":78}}data: {"id":"as-8pi6hewpi6","object":"chat.completion","created":1690278115,"sentence_id":1,"is_end":true,"is_truncated":false,"result":"呐喊》等。而周树人则是现代文学史上的著名诗人,他的作品以抒情为主,代表作品有《离骚》、《望岳》等。","need_clear_history":false,"usage":{"prompt_tokens":12,"completion_tokens":39,"total_tokens":117}}

制作一个网页端

index.html如下:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>百度千帆</title><style>body {font-family: Arial, sans-serif;}#chat-container {display: flex;flex-direction: column;height: 80vh;width: 50%;margin: auto;border: 1px solid #ddd;border-radius: 10px;padding: 10px;}#chat-history {flex-grow: 1;overflow-y: auto;margin-bottom: 10px;}#user-input {flex-grow: 0;margin-right: 10px;}h1 {text-align: center;}.send {text-align: center;}</style><script src="https://www.hyluz.cn/marked.min.js"></script>
</head>
<body>
<h1>百度千帆</h1>
<div id="chat-container"><div id="chat-history"></div><div class="send"><input type="text" id="user-input" placeholder="输入您的消息..."/><button id="send-button" onclick="sendMessage()">发送</button></div>
</div><script>const chatHistory = document.getElementById("chat-history");const userInput = document.getElementById("user-input");userInput.addEventListener("keydown", function (e) {if (e.key === "Enter") {e.preventDefault();sendMessage();}});function getCookie(name) {const value = "; " + document.cookie;const parts = value.split("; " + name + "=");if (parts.length === 2) return parts.pop().split(";").shift();}function addMessageToChatHistory(role, message) {const messageElement = document.createElement("div");messageElement.className = role;messageElement.innerHTML = marked.parse(message);chatHistory.appendChild(messageElement);chatHistory.scrollTop = chatHistory.scrollHeight;}function sendMessage() {const userMessage = userInput.value.trim();if (!userMessage) {return;}const userId = getCookie("sessionid");addMessageToChatHistory("user", "用户: " + userMessage);fetch("/chat", {method: "POST",headers: {"Content-Type": "application/json",},body: JSON.stringify({"user_id": userId, "user_input": userMessage}),}).then(response => response.json()).then(data => {const botResponse = data.response;addMessageToChatHistory("assistant", "百度AI: " + botResponse);}).catch(error => {console.error("Error:", error);});userInput.value = "";}
</script>
</body>
</html>

app.py如下:

from flask import Flask, render_template, request, jsonify, make_response
import requests
import uuidapp = Flask(__name__)# 替换成您的API Key和Secret Key
API_KEY = ""
SECRET_KEY = ""# 获取access_token
TOKEN_URL = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_KEY}&client_secret={SECRET_KEY}"
response = requests.get(TOKEN_URL)
ACCESS_TOKEN = response.json()["access_token"]# 定义ERNIE-Bot聊天接口地址
CHAT_API_URL = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={ACCESS_TOKEN}"
user_chat_histories = {}@app.route("/")
def index():sessionid = str(uuid.uuid4())[:16]resp = make_response(render_template("index.html"))resp.set_cookie("sessionid", sessionid)return resp@app.route("/chat", methods=["POST"])
def chat_with_ernie_bot():# 从前端获取用户输入的对话内容和sessioniduser_id = request.cookies.get("sessionid")user_input = request.json["user_input"]# 获取该用户的对话历史,如果用户是首次对话,则新建一个空列表作为其对话历史user_history = user_chat_histories.get(user_id, [])# 将用户输入添加到对话历史中user_history.append({"role": "user", "content": user_input})# 调用ERNIE-Bot聊天接口headers = {"Content-Type": "application/json"}data = {"messages": user_history}response = requests.post(CHAT_API_URL, headers=headers, json=data)result = response.json()["result"]print(result)user_history.append({"role": "assistant", "content": result})user_chat_histories[user_id] = user_historyreturn jsonify({"response": result})if __name__ == "__main__":app.run(host='0.0.0.0', port=1333, debug=False)

经典问题回答能力:
在这里插入图片描述
代码能力:

在这里插入图片描述

在这里插入图片描述
路还长,慢慢来吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

blender的下载安装和配置中文环境

引言 在3D建模和动画设计领域&#xff0c;Blender 作为一款强大且免费的开源软件&#xff0c;一直以优秀的性能和对众多技术的支持赢得了大批用户的喜爱。然而&#xff0c;对于刚接触这款软件的用户而言&#xff0c;其安装和配置过程可能会带来一定困扰&#xff0c;尤其是在设…

【redis】创建集群

这里介绍的是创建redis集群的方式&#xff0c;一种是通过create-cluster配置文件创建部署在一个物理机上的伪集群&#xff0c;一种是先在不同物理机启动单体redis&#xff0c;然后通过命令行使这些redis加入集群的方式。 一&#xff0c;通过配置文件创建伪集群 进入redis源码…

Spring Boot 应用程序生命周期扩展点妙用

文章目录 前言1. 应用程序生命周期扩展点2. 使用场景示例2.1 SpringApplicationRunListener2.2 ApplicationEnvironmentPreparedEvent2.3 ApplicationPreparedEvent2.4 ApplicationStartedEvent2.5 ApplicationReadyEvent2.6 ApplicationFailedEvent2.7 ApplicationRunner 3. 参…

虚拟机之间配置免密登录

目录 一、配置主机名映射 二、虚拟机配置SSH免密登录 三、验证 一、配置主机名映射 即修改/etc/hosts文件&#xff0c;将几台服务器和主机名进行映射。 注意每台服务器都要进行同样的配置。这样在各自服务器下&#xff0c;我们就可以通过主机名访问对应的ip地址了。 当然&…

BGP属性+选路规则

目录 一&#xff0c;BGP的属性—基础属性 1.PrefVal 2.LocPrf 3、优先本地下一跳 &#xff08;NextHop&#xff09; 4、AS-PATH 5、起源属性 6、MED -多出口鉴别属性 二&#xff0c;BGP选路规则 三&#xff0c;BGP的社团属性 一&#xff0c;BGP的属性—基础…

低碳 Web 实践指南

现状和问题 2023年7月6日&#xff0c;世界迎来有记录以来最热的一天。气候变化是如今人类面临的最大健康威胁。据世界卫生组织预测2030年至2050年期间&#xff0c;气候变化预计每年将造成约25万人死亡。这是人们可以真切感受到的变化&#xff0c;而背后的主要推手是碳排放。 …

功率放大器的种类有哪三种类型

功率放大器是一种能将输入信号转换为更高功率输出的电子设备。在电子工程和音频领域中&#xff0c;功率放大器通常被分为三种类型&#xff1a;A类、B类和AB类。下面安泰电子将详细介绍这三种类型的功率放大器及其特点。 A类功率放大器 A类功率放大器是一种基本的线性功率放大器…

Flask简介与基础入门

一、了解框架 Flask作为Web框架&#xff0c;它的作用主要是为了开发Web应用程序。那么我们首先来了解下Web应用程序。Web应用程序 (World Wide Web)诞生最初的目的&#xff0c;是为了利用互联网交流工作文档。 1、一切从客户端发起请求开始。 所有Flask程序都必须创建一个程序…

【电网技术复现】考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

代码随想录算法训练营之JAVA|第十八天| 235. 二叉搜索树的最近公共祖先

今天是第 天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天&#xff0c;如果做不到&#xff0c;完成一件评论区点赞最高的挑战。 算法挑战链接 235. 二叉搜索树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/descriptio…

sql 参数自动替换

需求&#xff1a;看日志时&#xff0c;有的sql 非常的长&#xff0c;参数比较多&#xff0c;无法直接在sql 客户端工具执行&#xff0c;如果一个一个的把问号占位符替换为参数太麻烦&#xff0c;因此写个html 小工具&#xff0c;批量替换&#xff1a; 代码&#xff1a; <!…

从零开始学python(十四)百万高性能框架scrapy框架

前言 回顾之前讲述了python语法编程 必修入门基础和网络编程&#xff0c;多线程/多进程/协程等方面的内容&#xff0c;后续讲到了数据库编程篇MySQL&#xff0c;Redis&#xff0c;MongoDB篇&#xff0c;和机器学习&#xff0c;全栈开发&#xff0c;数据分析&#xff0c;爬虫数…

Java多线程面试21题

并行和并发有什么区别&#xff1f; 并行是指两个或者多个事件在同一时刻发生&#xff1b;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件&#xff0c;并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务&#xff0c;在多台处理…

C++多线程环境下的单例类对象创建

使用C无锁编程实现多线程下的单例模式 贺志国 2023.8.1 一、尺寸较小的类单例对象创建 如果待创建的单例类SingletonForMultithread内包含的成员变量较少&#xff0c;整个类占用的内存空间较小&#xff0c;则可以使用如下方法来创建单例对象&#xff08;如果类的尺寸较大&am…

新SDK平台下载开源全志D1-H/D1s的SDK

获取SDK SDK 使用 Repo 工具管理&#xff0c;拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is…

C语言的转义字符

转义字符也叫转移序列&#xff0c;包含如下&#xff1a; 转移序列 \0oo 和 \xhh 是 ASCII 码的特殊表示。 八进制数示例&#xff1a; 代码&#xff1a; #include<stdio.h> int main(void) {char beep\007;printf("%c\n",beep);return 0; }结果&#xff1a; …

机器视觉初步14:相机标定原理及应用

相机标定是指通过已知的相机参数&#xff0c;解算相机内部参数矩阵和外部参数矩阵。 文章目录 1.为什么要标定&#xff1f;2.工业场景中常见的标定方法2.1. 使用棋盘格标定板&#xff08;Checkerboard Markers&#xff09;2.2 使用相机自标定2.3. 使用三维物体标定2.4.九孔标…

【Linux】—— 进程的创建和退出

序言&#xff1a; 在上期&#xff0c;我们已经对 Linux的进程的相关知识进行了相关的学习。接下来&#xff0c;我们要学习的便是关于进程控制 的基本知识&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;进程创建 1、fork函数初识 2、写时拷贝 3、f…

Docker中容器数据卷

容器数据卷 一.什么是容器数据卷二.使用数据卷方式一&#xff1a;直接使用命令来挂载 -v 三.具名和匿名挂载 一.什么是容器数据卷 docker理念 将应用和环境打包成一个镜像&#xff01; 数据&#xff1f;如果数据都在容器中&#xff0c;那么我们的容器删除&#xff0c;数据就会…

oracle 19c打补丁遭遇OPATCHAUTO-72043OPATCHAUTO-68061

最近&#xff0c;在AIX上的新装oracle 19C数据库基础版本&#xff0c;使用opatchauto打PSU补丁集35037840时遇到了OPATCHAUTO-72043报错&#xff0c;无法正常应用GI补丁。 一、环境描述 操作系统&#xff1a;AIX 数据库版本&#xff1a;oracle rac 19.3.0新装基础版 应用PS…