基于 Python 代码实现微信公众号接入 Kimi 文本生成模型

内容简介

本文手把手教你通过 Python 代码搭建智能服务中台,实现 Kimi API 与微信公众号的无缝对接。文章将详解如何利用 Flask 框架构建微信消息处理引擎,结合 Kimi 的多模态 AI 能力(如长文本解析、数据分析),打造智能客服、内容生成等场景化应用。

Python 调用 Kimi Api 接口

打开 kimi 开发平台网站, 找到对应的选项 https://platform.moonshot.cn/console/api-keys, 点击新建 Api key。
在这里插入图片描述
在这里插入图片描述
调用 kimi 的主要代码实现如下:

from openai import OpenAI
import time 
import random 

client = OpenAI(
    api_key = "your api key", # 在这里将 MOONSHOT_API_KEY 替换为你从 Kimi 开放平台申请的 API Key
    base_url = "https://api.moonshot.cn/v1",
)

messages = [
	{
        "role": "system", 
        "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"
    },
]
 
def chat(input: str) -> str:
    time.sleep(random.randint(1, 3))
    global messages
 
    # 我们将用户最新的问题构造成一个 message(role=user),并添加到 messages 的尾部
    messages.append({
        "role": "user",
        "content": input,	
    })
 
    # 携带 messages 与 Kimi 大模型对话
    completion = client.chat.completions.create(
        model="moonshot-v1-8k",
        messages=messages,
        temperature=0.3,
    )   
 
    assistant_message = completion.choices[0].message
    messages.append(assistant_message)
 
    return assistant_message.content

运行结果如下:
在这里插入图片描述

Flask 框架构建微信消息处理引擎

代码实现如下:

from flask import Flask, request
from kimi_chat import chat
import xml.etree.ElementTree as ET
import hashlib
import time

app = Flask(__name__)

# 你的微信公众号配置信息
TOKEN = "you token"  # 替换为你在公众号后台设置的Token

def check_signature(signature, timestamp, nonce):
    """验证微信服务器发来的请求"""
    # 按微信的规则进行签名验证
    temp = [TOKEN, timestamp, nonce]
    temp.sort()
    temp_str = ''.join(temp)
    hash_obj = hashlib.sha1(temp_str.encode('utf-8'))
    if hash_obj.hexdigest() == signature:
        return True
    return False


@app.route('/', methods=['GET', 'POST'])
def wechat():
    if request.method == 'GET':
        # 处理微信服务器的验证请求
        signature = request.args.get('signature', '')
        timestamp = request.args.get('timestamp', '')
        nonce = request.args.get('nonce', '')
        echostr = request.args.get('echostr', '')
        
        if check_signature(signature, timestamp, nonce):
            return echostr
        return 'Invalid Request'
                                                        
    elif request.method == 'POST':
        # 处理用户发送的消息
        xml_data = request.data
        if not xml_data:
            return 'Invalid Request'
            
        # 解析XML数据
        xml_tree = ET.fromstring(xml_data)
        msg_type = xml_tree.find('MsgType').text
        
        if msg_type == 'text':
            # 获取用户发送的文本消息
            user_msg = xml_tree.find('Content').text
            from_user = xml_tree.find('FromUserName').text
            to_user = xml_tree.find('ToUserName').text
            kimi_reply = chat(user_msg)

            # 构造回复消息
            reply = f"""
            <xml>
                <ToUserName><![CDATA[{from_user}]]></ToUserName>
                <FromUserName><![CDATA[{to_user}]]></FromUserName>
                <CreateTime>{int(time.time())}</CreateTime>
                <MsgType><![CDATA[text]]></MsgType>
                <Content><![CDATA[{kimi_reply}]]></Content>
            </xml>
            """
            return reply
        return 'success'
    

if __name__ == '__main__':
    # 启动服务器,使用SSL证书(微信要求必须使用HTTPS)
    app.run(host='0.0.0.0', port=8080)

这里需要使用内网穿透将内网暴露在公网上,方便后续的微信公众号配置,这里使用贝瑞花生壳来实现。
在这里插入图片描述
在这里插入图片描述
这个时候就可以通过浏览器输入 https://761rg252nf06.vicp.fun 来访问自己的内网了。

微信公众号的开发者配置

首先需要自己注册一个微信公众号,点击开发接口管理进行服务器配置。
在这里插入图片描述

这个时候运行 Flask 程序,访问自己的微信公众号就可以实现 Kimi API 和微信公众号对接。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈桑indie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值