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
完整专栏内容,尽在编程严选网免费阅读学习:
图片