一个AI的简单的订餐机器人搭建

做一个简单的订餐机器人

在这篇文章中,我们将手把手教你搭建一个基于 Groq 平台和 LLaMA3 模型的智能订餐机器人。它有基础的交互能力,能够通过多轮对话收集用户的订单信息,并给出正确、友好的应答。

项目功能概览

  • 连接 Groq API,调用 llama3-70b-8192 模型

  • 采用 Panel 搭建前端 UI 界面

  • 支持多轮对话,保持上下文 context

  • 支持自动回显订单总额、送货方式确认等


1. 基础环境配置

首先,确保你已经拥有:

  • 正确的 Groq API Key

  • Python 3.9+

  • 安装了 openai, panel, python-dotenv 等包

pip install openai panel python-dotenv

将 Groq API Key 写入 .env文件:

GROQ_API_KEY=your_real_groq_key

2. 创建基本调用方法

import os
import openai
from dotenv import load_dotenv, find_dotenv

# 读取 Groq API Key
load_dotenv(find_dotenv())
openai.api_key = os.environ['GROQ_API_KEY']
openai.api_base = "https://api.groq.com/openai/v1"

# 基本问答功能
def get_completion(prompt, model="llama3-70b-8192"):
    try:
        response = openai.ChatCompletion.create(
            model=model,
            messages=[
                {"role": "system", "content": "你是一个智能助手"},
                {"role": "user", "content": prompt}
            ],
            temperature=0.7
        )
        return response.choices[0].message["content"]
    except Exception as e:
        return f"❌ 调用失败:{e}"

3. 建立对话上下文 context 管理

每次用户输入后,将该输入作为 user 上下文加入,然后调用 LLM,再把答案作为 assistant 加入,通过 list 堆空间保持全轮对话历史:

context = [
    {'role': 'system', 'content': """
    你是订餐机器人,为披萨餐厅自动收集订单信息...
    (看全文大菜单和规则)
    """}
]

4. 构建 Panel UI 互动界面

import panel as pn
pn.extension()

panels = []  # 显示区域
inp = pn.widgets.TextInput(value="Hi", placeholder='输入聊天内容...')
button_conversation = pn.widgets.Button(name="开始聊天")

# 对话逻辑

def get_completion_from_messages(messages, model="llama3-70b-8192"):
    try:
        response = openai.ChatCompletion.create(
            model=model,
            messages=messages,
            temperature=0.7
        )
        return response.choices[0].message["content"]
    except Exception as e:
        return f"❌ 调用失败:{e}"

def collect_messages(_):
    prompt = inp.value_input.strip()
    inp.value = ''
    if not prompt:
        return pn.pane.Markdown("⚠️ 请先输入内容")
    context.append({'role': 'user', 'content': prompt})
    response = get_completion_from_messages(context)
    context.append({'role': 'assistant', 'content': response})

    panels.append(pn.Row('User:', pn.pane.Markdown(prompt, width=600)))
    panels.append(pn.Row(
        'Assistant:',
        pn.pane.HTML(f"<div style='background-color:#F6F6F6; padding:10px;'>{response}</div>", width=600)
    ))
    return pn.Column(*panels)

interactive_conversation = pn.bind(collect_messages, button_conversation)

inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')
button_conversation = pn.widgets.Button(name="Chat!")
interactive_conversation = pn.bind(collect_messages, button_conversation)
dashboard = pn.Column(
    inp,
    pn.Row(button_conversation),
    pn.panel(interactive_conversation, loading_indicator=True, height=300),
)
dashboard.servable()

5. 效果展示

当你运行上面代码后,将打开一个包含 TextInput + 按钮的简易聊天 UI,可以输入如:

  • "我想来一份辣香肠披萨,中大"

  • "加一份蘑菇"

  • "还有什么饮料"

  • "送到中山路 88 号"

等等,会看到模型基于上下文给出合理并友好的回复,同时维持对话轮次续成。


6. 结论

通过一行一行构造订餐机器人,我们实现了:

  • 基于 Groq API 的 LLaMA3 调用

  • 基于 Panel 的前端交互设计

  • 自动管理对话上下文

这个小项目非常适合 LLM 初学者、教程示范、课程演示等场景。你也可以继续扩展,比如:

  • 增加订单总结表

  • 配合数据库保存历史

  • 增加私人化方案推荐

一切都是可能的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张.舞蹈家.陆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值