随着大模型技术的日益成熟,构建一个属于自己的AI聊天机器人变得越来越简单。本文将以 Muhammad Mubashir Saeedi 的教程为基础,深入探讨如何使用 Chainlit 和 Google Gemini API,一步步构建一个简易但功能强大的 AI聊天机器人。我们将从环境搭建、代码编写到部署上线,全面解析各个环节的关键步骤,帮助你快速掌握大模型在实际应用中的技巧。
1. 环境搭建:uv 初始化与依赖安装
首先,我们需要搭建一个干净且隔离的开发环境。 Muhammad Mubashir Saeedi 推荐使用 uv
,一个更现代化的 Python 包管理器,来初始化项目。相较于传统的 venv
和 pip
, uv
在速度和资源利用率上更有优势。
具体操作如下:
- 打开命令提示符(Command Prompt)或终端,并进入你的项目目录(例如,桌面)。
- 输入
uv init helloMubashir
(这里的helloMubashir
是项目名称,可以自定义) 创建一个名为helloMubashir
的项目。 - 使用
cd helloMubashir
进入项目目录。 - 运行
code .
打开 VS Code 编辑器。
接下来,我们需要安装项目所需的依赖包。作者推荐使用 uv add openai-agents dotenv chainlit
命令安装 openai-agents
、dotenv
和 chainlit
三个关键库。
chainlit
:是构建 Python AI聊天机器人的开源框架,它简化了用户界面和交互逻辑的开发,让开发者专注于核心的 大模型 应用。openai-agents
:虽然名字包含 OpenAI,但在这里用于与 Google Gemini API 交互,它提供了一套标准化的接口,方便我们调用各种 大模型。dotenv
:用于管理环境变量,安全地存储你的 Google Gemini API 密钥。
安装完成后,运行 .venv\scripts\activate
(Windows) 或 source .venv/bin/activate
(Linux/macOS) 激活虚拟环境。
2. 配置 API 密钥:获取与存储
要使用 Google Gemini API,我们需要先获取 API 密钥。前往 Google AI Studio (aistudio.google.com),登录你的 Google 账号,并创建一个新的 API 密钥。
- 确保你已经同意了 Google AI Studio 的使用条款。
- 如果需要,可以创建一个新的 Google Cloud 项目来管理你的 API 密钥。
获取 API 密钥后,创建一个名为 .env
的文件,并将密钥存储在其中,格式如下:
GEMINI_API_KEY=YOUR_API_KEY
务必 将 .env
文件添加到你的 .gitignore
文件中,防止敏感信息泄露到公共代码仓库。
3. 代码编写:Chainlit 与 Gemini API 集成
现在,我们可以开始编写 AI聊天机器人 的核心代码了。创建一个名为 main.py
的文件,并将以下代码复制进去(强烈建议手敲,而不是复制粘贴,这样能更好地理解代码逻辑):
# --------------------------------------------------------
# 🧠 Simple AI Chatbot using Chainlit + Gemini API
# 👨💻 Developed & Explained by Muhammad Mubashir
# 📅 Date: June 2025
# --------------------------------------------------------
import os
import chainlit as cl
from dotenv import load_dotenv
from agents import Agent, Runner, AsyncOpenAI, RunConfig, OpenAIChatCompletionsModel
load_dotenv()
MODEL_NAME = "gemini-2.0-flash" # Use the appropriate Gemini model name
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
external_client = AsyncOpenAI(
api_key=GEMINI_API_KEY,
base_url="https://generativelanguage.googleapis.com/v1beta/openai/" # Gemini API endpoint
)
model = OpenAIChatCompletionsModel(
model=MODEL_NAME,
openai_client=external_client
)
config = RunConfig(
model=model,
model_provider=external_client,
tracing_disabled=True
)
my_assitant = Agent(
name="AI Assitant",
instructions="You are helpful a assitant",
# model = model # 可以直接绑定模型
)
@cl.on_chat_start
async def start():
await cl.Message(
content="👋 Welcome to Simple Chatbot! Ask anything.\n\n👨💻 *Created by Muhammad Mubashir*"
).send()
@cl.on_message
async def handle_message(message: cl.Message):
try:
user_input = message.content
result = await Runner.run(my_assitant, input=user_input, run_config=config)
await cl.Message(content=result.final_output).send()
except Exception as e:
await cl.Message(content=f"❌ Error: {e}").send()
# result = Runner.run_sync(my_assitant,"how are you", run_config = config)
# print(result.final_output)
这段代码主要做了以下几件事:
- 导入必要的库:
os
,chainlit
,dotenv
, 以及agents
模块中的相关类。 - 加载环境变量:使用
load_dotenv()
加载.env
文件中的 API 密钥。 - 配置 Gemini API 客户端:创建
AsyncOpenAI
客户端,并指定 API 密钥和 Gemini API 的基础 URL。 - 创建 OpenAI 模型实例: 通过
OpenAIChatCompletionsModel
将外部的AsyncOpenAI
和模型名称绑定,方便后续调用。 - 配置运行参数:创建
RunConfig
对象,配置模型、模型提供者和是否禁用追踪。 - 定义 AI 助手:创建
Agent
对象,设置助手的名称和指令(例如,”你是一个乐于助人的助手”)。 - 定义 Chainlit 事件处理函数:
@cl.on_chat_start
:在聊天开始时发送欢迎消息。@cl.on_message
:处理用户输入的消息,调用Runner.run
方法运行 AI 助手,并将结果发送给用户。
这里有几点需要注意:
MODEL_NAME
变量需要根据你使用的 Gemini 模型进行调整,例如"gemini-2.0-pro"
或"gemini-2.0-flash"
。base_url
变量需要指向正确的 Gemini API Endpoint. 当前使用的是https://generativelanguage.googleapis.com/v1beta/openai/
,请参考官方文档确认最新地址。Agent
的instructions
属性定义了 AI聊天机器人 的行为方式,你可以根据自己的需求进行修改。 例如,可以添加特定的知识领域或回答风格。
4. 运行与测试:chainlit run 命令
一切准备就绪,我们可以运行 AI聊天机器人 了。在命令提示符或终端中,确保你仍然在项目目录中,然后运行以下命令:
chainlit run main.py
这将启动 Chainlit 应用,并在你的浏览器中打开一个页面。你应该能看到 “👋 Welcome to Simple Chatbot! Ask anything.\n\n👨💻 *Created by Muhammad Mubashir*” 的欢迎消息。
现在,你可以开始与你的 AI聊天机器人 互动了。输入一些问题,看看它的回答。例如,你可以问 “你好”、”今天天气怎么样?” 或 “什么是人工智能?”。
5. 优化与改进:Agent 与指令工程
AI聊天机器人 的性能很大程度上取决于 Agent
的配置,特别是 instructions
属性。这就是所谓的“指令工程”,即通过精心设计的指令,引导 大模型 产生更符合期望的输出。
例如,我们可以修改 instructions
属性,让 AI聊天机器人 扮演一个特定领域的专家:
my_assitant = Agent(
name="AI 金融助手",
instructions="你是一位专业的金融助手,擅长分析股票、基金和宏观经济数据。请用简洁明了的语言回答用户的问题,并提供有价值的建议。",
# model = model
)
通过这样的修改,AI聊天机器人 在回答金融相关问题时,会更加专业和准确。
除了 instructions
属性,还可以通过调整 RunConfig
对象中的参数来优化 AI聊天机器人 的性能。例如,可以调整 temperature
参数,控制 大模型 的输出随机性:
temperature = 0
:输出更加确定和保守。temperature = 1
:输出更加随机和创造性。
6. 部署与分享:Vercel 或其他平台
完成开发和测试后,你可以将你的 AI聊天机器人 部署到云平台上,与其他人分享。常见的部署平台包括 Vercel、Heroku、AWS 和 Google Cloud。
以 Vercel 为例,你需要:
- 将你的代码推送到 GitHub 或 GitLab 仓库。
- 在 Vercel 上创建一个新的项目,并连接到你的代码仓库。
- 配置 Vercel 的环境变量,设置
GEMINI_API_KEY
的值。 - 部署你的项目。
Vercel 会自动构建和部署你的 AI聊天机器人,并提供一个公开的 URL。你可以将这个 URL 分享给你的朋友或同事,让他们体验你的作品。
7. 进阶应用:扩展与定制
掌握了基本的 AI聊天机器人 构建方法后,你可以尝试扩展和定制它的功能,例如:
- 集成外部数据源:连接到数据库、API 或其他数据源,让 AI聊天机器人 能够回答更复杂的问题。 例如,可以连接到天气 API,让 AI聊天机器人 能够提供实时天气信息。
- 添加记忆功能:使用 Redis 或其他缓存技术,让 AI聊天机器人 记住之前的对话内容,并提供更个性化的服务。 这需要使用 Chainlit 提供的会话管理功能。
- 实现多轮对话:通过维护对话状态,让 AI聊天机器人 能够进行更复杂的对话流程。 例如,可以实现一个订餐机器人,引导用户完成点餐过程。
- 使用 LangChain 等框架:LangChain 提供了更高级的 大模型 应用开发工具,例如链式调用、知识库集成和代理工具。 可以结合 LangChain 和 Chainlit,构建更强大的 AI聊天机器人。
8. 大模型技术的未来与挑战
大模型 技术正在快速发展,其在 AI聊天机器人 领域的应用也越来越广泛。未来,我们可以期待:
- 更强大的模型:更大的模型、更复杂的架构和更多的数据,将带来更智能、更自然的对话体验。
- 更个性化的服务:AI聊天机器人 将能够更好地理解用户的需求,提供更个性化的服务。
- 更广泛的应用:AI聊天机器人 将被应用到更多的领域,例如教育、医疗、金融和娱乐。
然而,大模型 技术也面临着一些挑战:
- 算力需求:训练和部署 大模型 需要大量的算力,这限制了其应用范围。
- 数据隐私:大模型 需要大量的数据进行训练,这引发了数据隐私的担忧。
- 伦理问题:大模型 可能会产生偏见和歧视,这需要我们认真对待。
总之,大模型 技术为 AI聊天机器人 的发展带来了巨大的机遇,同时也提出了新的挑战。我们需要在享受技术带来的便利的同时,积极应对这些挑战,确保 大模型 技术能够更好地服务于人类。
总结
本文以 Muhammad Mubashir Saeedi 的教程为基础,深入探讨了如何使用 Chainlit 和 Google Gemini API 构建一个简易 AI聊天机器人。我们从环境搭建、API 密钥配置、代码编写、运行测试到优化部署,全面解析了各个环节的关键步骤。希望本文能够帮助你快速掌握 大模型 在实际应用中的技巧,并开启你的 AI聊天机器人 开发之旅。 通过本文的学习,相信你已经对大模型和AI聊天机器人有了更深入的了解,也能够在实际项目中灵活运用Chainlit和Google Gemini API等工具,创造出更多有价值的应用。