让你的AI Agent接入电报机器人!

人工智能 机器人
万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」。

0.数据架构

+-----+
        | TTS |
        +--+--+
           |
           v
     +------------+
     | Server api |
     +-----+------+
           |
     +-----v-----+
     |   Agent   |
     +-----+-----+
       |       |
   +---v---+ +-v------+
   | tools | | memory |
   +-------+ +--------+

从 memory 向上流动到TTS,再向下流动到tools。

1.申请机器人KEY

搜索关注 BotFather,注意有蓝标官方认证的,很多假冒,如:

图片图片

这个才是正版!

图片图片

1.1 新建一个机器人

图片图片

1.2 编辑机器人信息

图片图片

编辑“关于”信息:

图片图片

设置机器人头像

图片图片

行了,直接访问 bot 吧!

图片图片

2.引入telebot包

import telebot
# 之前获取的 user token
bot = telebot.TeleBot('xxx:xxx')

3.编写客户端代码

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, '你好我是JavaEdge,欢迎光临!')
python tele-qwen.py

启动项目,对话 bot,即可看到

3.1 指定回复

图片图片

3.2 引用&&回复

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.reply_to(message, '你好!')

4.将 bot 关联到 server 端

即关联到 chat 接口:

@bot.message_handler(func=lambda message: True)
def echo_all(message):
    # bot.reply_to(message, message.text)
    try:
        encoded_text = urllib.parse.quote(message.text)
        response = requests.post('http://localhost:8090/chat?query=' + encoded_text, timeout=100)
        if response.status_code == 200:
            ai_say = json.loads(response.text)
            if "msg" in ai_say:
                bot.reply_to(message, ai_say["msg"]["output"])
                audio_path = f"{ai_say['id']}.mp3"
                asyncio.run(check_audio(message, audio_path))
            else:
                bot.reply_to(message, "对不起,我不知道怎么回答你")
    except requests.RequestException as e:
        bot.reply_to(message, "对不起,我不知道怎么回答你")


async def check_audio(message, audio_path):
    while True:
        if os.path.exists(audio_path):
            with open(audio_path, 'rb') as f:
                bot.send_audio(message.chat.id, f)
            os.remove(audio_path)
            break
        else:
            print("waiting")
            await asyncio.sleep(1)


bot.infinity_polling()

这样就能将 LLM 的回复响应给 tg 用户:

图片图片

参考:

  • tg api

完整专栏内容,尽在编程严选网免费阅读学习:

图片图片

责任编辑:武晓燕 来源: JavaEdge
相关推荐

2024-08-06 08:40:32

2022-07-28 11:26:41

人工智能机器人

2024-07-30 11:21:17

TTSAIAgent

2020-12-31 06:55:37

机器人自然语言人工智能

2021-10-31 15:51:30

机器人人工智能监控

2018-05-08 15:33:38

机器人AI殡葬智能殡葬

2024-01-05 19:44:48

谷歌机器人宪法AI

2016-06-02 11:45:34

2018-03-02 16:50:43

人工智能机器人

2020-10-15 15:42:00

人工智能

2021-06-07 08:28:26

人工智能AI机器人

2022-03-04 10:14:46

机器人

2017-11-14 12:55:08

人工智能机器人区块链

2015-12-10 21:49:32

IM机器人

2023-05-23 09:56:14

机器人谷歌

2021-09-03 16:12:52

机器人人工智能编程

2019-08-26 10:09:51

机器人人工智能编程

2021-02-15 15:17:15

人工智能机器人技术

2022-05-13 16:07:01

机器人养老人工智能

2017-03-24 14:40:48

点赞
收藏

51CTO技术栈公众号