首页 > 其他分享 >.net做一个基于ChatGpt的微信机器人吧~[全教程]

.net做一个基于ChatGpt的微信机器人吧~[全教程]

时间:2022-12-12 22:23:02浏览次数:74  
标签:WECHATY 微信 message token Wechaty wechaty PUPPET net ChatGpt

最近这个ChatGPT很火啊,看了B站上很多视频,自己非常手痒,高低自己得整一个啊,很多人都是把ChatGPT和微信结合在一起,正巧我是Wechaty框架的.net sdk贡献者,这不是一应俱全了吗?

目录

ChatGPT是啥?

先了解GTP,摘自官网的一段话“A set of models that can understand and generate natural language”,其实,就是一个自然语言处理的模型。所以ChatGPT顾名思义就是基于GPT3的一个聊天AI。
但是想让他做苦力帮忙写代码的话所需要的其实不是这个模型,而是Codex这个模型,按照官网所说“Most capable Codex model. Particularly good at translating natural language to code. In addition to completing code, also supports inserting completions within code.”。真的是碉堡了!

准备

第一步:注册OpenAI账号

因为对大陆以及中国香港地区不开放,所以我们需要小小的科学一下。
来一个我就是参照着申请账号的园子的文章:
https://www.cnblogs.com/chatgpt/p/how-to-register-chatgpt-in-china.html
当然手机那里可以淘宝找,几块钱就能帮忙注册手机,账号里面默认还有18美元余额。

注意点:如果搭建了科学还是提示不对你的国家提供服务的话,尝试清空浏览器缓存或者打开浏览器的无痕窗口。Chrome默认在右上角三个点打开就能找到“打开新的无痕式窗口”。

第二步:Wechaty token

由于本人是wechaty的贡献者,所以是有一年免费的token的。
申请网址:http://pad-local.com/
只要注册一个账号就有七天免费的token,当然听说wechaty官网可以搞一个15天的试用。
大家如果只是体验的话,可以轮流搞几个免费token,毕竟价格实在太不美丽了,大款可以直接付款买~

第三步: 搭建Wechaty网关

这边推荐用docker安装wechaty gateway
Docker直接输入命令:

docker pull wechaty/wechaty

拉完镜像后直接运行

docker run -ti \
-d \
--restart = always \
--name wechaty_gateway \
--rm \
-e WECHATY_LOG = verbose \
-e WECHATY_PUPPET = wechaty-puppet-padlocal \
-e WECHATY_PUPPET_PADLOCAL_TOKEN = ###你申请到的wechaty token### \
-e WECHATY_PUPPET_SERVER_PORT = ###服务对外的端口### \
-e WECHATY_TOKEN = ###自己生成的token### \
-p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" \
wechaty/wechaty

其中 WECHATY_TOKEN是自己生成的token,大家随便找个地方生成一个GUID就行了,但是一定要保存起来。

万事具备,直接撸代码

引用官网推荐的.net sdk

<PackageReference Include="Betalgo.OpenAI.GPT3" Version="6.6.0" />

注册OpenAI服务,并且传入app key

services.AddOpenAIService(options => 
{
    options.ApiKey = openAIOptions.AppKey;
});

使用自带的方法,传入特定的模型和文本,然后发送给OpenAI,NLP作出处理后得到解析的结果。

/// <summary>
/// 对话
/// </summary>
/// <param name="question">原话</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public async Task<CompletionCreateResponse> TalkAsync(string words)
{
    if (string.IsNullOrEmpty(words))
        return null;

    var completionResult = await _asyncTimeoutPolicy.ExecuteAsync(async () =>
    {
        return await _openAIService.Completions.CreateCompletion(new CompletionCreateRequest()
        {
            Prompt = words,
            MaxTokens = _textMaxTokens,
            Temperature = _textTemperature
        }, _textModel);
    });

    if (completionResult.Successful)
    {
        return completionResult;
    }
    else
    {
        var errorMsg = completionResult.Error == null ? "Unknown Error" : $"{completionResult.Error.Code}: {completionResult.Error.Message}";
        throw new Exception(errorMsg);
    }
}

启动Wechaty机器人,传入token和上面安装的Wechaty网关所在的终结点。

var PuppetOptions = new PuppetOptions()
{
    Token = _configuration["WECHATY_PUPPET_SERVICE_TOKEN"],//上面自己生成的WECHATY_TOKEN
    Endpoint = _configuration["WECHATY_PUPPET_SERVICE_ENDPOINT"]//Wechaty网关所在地址:https://ip:port
};

_bot = new Wechaty.Wechaty(PuppetOptions).Use(new QRCodeTerminalPlugin());
_bot.OnScan(OnScanLinstener);
await _bot.OnMessage(WechatyMessageEventListenerAsync).OnHeartbeat(WechatyHeartbeatEventListener).Start();

启动后,正常情况下,在控制台会出现一个微信二维码,直接掏出你的微信扫码登陆就行。

Wechaty接收信息处理事件

/// <summary>
/// 接受消息
/// </summary>
/// <param name="message"></param>
private async void WechatyMessageEventListenerAsync(Message message)
{
    if (message.Self || message.Type != MessageType.Text) //来自自己的消息不回复 目前只处理文本信息
        return;
    try
    {
        if (message.Room == null || string.IsNullOrEmpty(message.Room.Id))
        {
            await HandleSingleCoversation(message); //私聊
        }
        else
        {
            await HandleRoomCoversation(message); //群聊
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
}

效果截图

文本聊天

代码模式

源码,部署方式,体验一下

https://github.com/BruceQiu1996/NChatGPT

总结

在我看来GPT更像是一个知识面非常宽广可以给出非常专业的建议的知识大脑,同时他的代码库非常齐全,能够写出很多算法。
希望程序员们再接再厉,早日把我们搞没了,哈哈哈。

标签:WECHATY,微信,message,token,Wechaty,wechaty,PUPPET,net,ChatGpt
From: https://www.cnblogs.com/qwqwQAQ/p/16977278.html

相关文章