IT笔记捣鼓vue+python flask实现智谱清言接口web服务
何平安创建个主py文件和副py接口,主py先引入运行代码:
1 2 3 4 5 6 7 8 9
| from flask import Flask
from blog import blog
app = Flask(__name__) app.register_blueprint(blog)
if __name__ == '__main__': app.run()
|
这里我的副py文件叫blog.py,所以就引入它的名字了(记得放在同一个目录下)
接下来是blog接口代码~
引入配置:
1 2 3 4 5 6 7 8 9
| import os
import requests from flask import Blueprint, request from zhipuai import ZhipuAI
blog = Blueprint('blog', __name__)
client = ZhipuAI(api_key="替换为你的Api key")
|
接口代码
普通的GLM4文本对话接口:
1 2 3 4 5 6 7 8 9 10 11 12 13
| @blog.route('/chat', methods=['POST']) def chat_GLM4(): content = request.form['content'] print(request.form['content']) response = client.chat.completions.create( model="glm-4", messages=[ {"role": "system", "content": "你是一个和蔼可亲,粘人的女友,你在回答用户问题时可以带点儿甜言蜜语"}, {"role": "user", "content": content} ], ) print(response.choices[0].message.content) return response.choices[0].message.content
|
这里的message中的system内容是让模型扮演个对应角色或提出要求,下面的content才是提出问题
GLM-4v图像文本对话:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| @blog.route('/chatgv', methods=['POST']) def chat_GLM4V(): img = request.files.get('img') header = { "token": "你的IMGTP图床token", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0" }
files = { "image": ('img.jpg', img, 'multipart/form-data') } r2 = requests.post(url="https://www.imgtp.com/api/upload", files=files, headers=header)
r2_data = r2.json()
if r2.status_code == 200: img_url = r2_data.get("data", {}).get("url") img_name = r2_data.get("data", {}).get("name") img_id = r2_data.get("data", {}).get("id") print(f"图片地址:{img_url},图片名:{img_name},图片id: {img_id}") else: print(r2.status_code)
content = request.form['content'] response = client.chat.completions.create( model="glm-4v", messages=[ { "role": "user", "content": [ { "type": "text", "text": content }, { "type": "image_url", "image_url": { "url": img_url } } ] } ] ) print(response.choices[0].message.content) r = requests.post("https://www.imgtp.com/api/delete", headers=header, data={'id': img_id}) print(r.json()) return response.choices[0].message.content
|
记得替换你的IMGTP图床token,获取token方法:登录网站:ImgTP - 免费公共图床,在设置里面可以看到你账号的token:

它里面也提供了官方接口文档
我这里的逻辑是先通过imgtp图床上传图片,将上传的图片链接返回并传给GLM-4v对话模型,调用完成后就删除图片了(删除它可以不占用图床空间,也可以不删看自己需求)
cogview-3图像生成
1 2 3 4 5 6 7 8 9 10
| @blog.route('/draw', methods=['POST']) def draw(): content = request.form.get('content') response = client.images.generations( model="cogview-3", prompt=content, ) print(response.data[0].url) return response.data[0].url
|
会返回图片链接
调用实例
工具:postman
运行主py文件,普通文本对话:

图像文本对话:

图像生成接口:
