如何开发一个用AI一键生成行程+查航班+订住宿的旅行App?(附开源代码)

如果一切都在变得智能化,那为什么旅行不能变得更智能呢?正是带着这种想法,我开始了 Nomado (下图为产品页面)的开发。旅行不仅仅是预订机票和去美丽的地方,你还需要查找签证信息、制定行程、研究文化、寻找住宿地点,以及做更多的事情。Nomado 解决了所有这些问题,而这些功能中的每一个都得到了​ DigitalOcean 的 GradientAI 平台的支持 ​。在这篇文章中,我们将看到如何构建 AI 驱动的应用程序来自动化无聊的部分。在深入了解“如何”之前,让我们先了解 GradientAI 平台及其功能。

关键要点

读完本教程,你将能:

  • 理解 GradientAI 平台是什么,以及如何使用它构建 AI 驱动的应用程序,包括其核心功能,如 Serverless 推理(serverless inference)、代理路由(agent routing)和知识库
  • 学会如何用 GradientAI 平台构建一个旅行应用,实现个性化行程规划、航班信息提供、住宿推荐等功能
  • 掌握如何用 GradientAI 平台构建一个智能聊天机器人,能通过专业代理路由处理住宿和常见旅行问题

GradientAI 平台是什么?

DigitalOcean GradientAI 平台DigitalOcean GradientAI 平台是一个完整的工具包,用于构建和运行 GPU 驱动的 AI 代理,无需管理繁琐的基础设施。无论你使用预训练模型还是自己训练的模型,都可以通过函数调用、代理路由,甚至检索增强生成(RAG)管道将它们连接起来,在需要时获取准确的信息。GradientAI 内建代理路由、知识库、护栏机制、 Serverless 推理等功能,让你更轻松地上线真正有用的 AI 代理。

你可以用 GradientAI 很轻松地构建聊天机器人,或者通过 API 构建完整的 AI 应用程序。

如何在 Nomado 中使用 GradientAI

在 Nomado 中,我们在三个核心功能中使用了 GradientAI 平台:

  • 行程生成:在签证研究完成后,Nomado 会根据目的地、出行天数和月份,为你生成个性化行程。

  • 航班信息获取:签证搞定、行程定好,接下来你就需要订机票了。此时我们通过 GradientAI 平台获取航班信息。

  • 聊天界面:签证和航班安排妥当,行程准备就绪。最后一步是找住宿,并了解当地文化、实用小贴士和预期情况。这个阶段,聊天界面会为你提供支持,它可以回答所有关于住宿和旅行的问题。

使用 Serverless 推理生成旅行行程

为了生成行程,我们使用了通过 GradientAI 平台的 Serverless 推理,并且这是如何设置的:

const SECURE_AGENT_KEY = process.env.SECURE_AGENT_KEY
const AGENT_BASE_URL = "https://inference.do-ai.run/v1" // 推理端点
const client = hasRequiredEnvVars
  ? new OpenAI({
    apiKey: SECURE_AGENT_KEY,
    baseURL: AGENT_BASE_URL,
  })
  : null

Serverless 推理允许你按需运行 AI 模型,无需考虑服务器管理。只需发送请求,模型会在云端运行,并立即返回结果。

当你在 Nomado 规划旅行时,系统的后台工作流程如下:

步骤 1:你的输入(浏览器端)

你输入:

  • 目的地:例如巴黎
  • 持续时间:例如 3 天
  • 月份:例如 6 月

步骤 2:Next.js 服务器操作以生成行程

服务器接收用户输入,生成如下提示词(prompt):

const prompt = `Your task is to generate a comprehensive travel plan for a ${duration}-day trip to ${destination} in ${visitMonth}. Make sure to bold the headings.
Please provide: 1. A ${duration}-day itinerary with day-by-day activities
2. A detailed packing list tailored to this destination in ${visitMonth}
(considering the local weather and conditions) 3. Local customs and cultural tips 4. Must-try local foods 5. Transportation recommendations
Format your response in markdown with clear sections.`

接着通过 Serverless 推理端点调用 GradientAI API。

步骤 3:DigitalOcean GradientAI 处理

请求到达 Serverless 推理服务:

  • 加载 llama-3.1-8b-instruct 模型
  • 使用上述提示运行模型
  • 生成完整的旅行计划
  • 发送结果回来

你可以在文末的​ GitHub 示例代码 中 查看完整代码。

使用 GradientAI 中的函数路由获取实时航班信息

接下来是获取航班信息,为此我们使用了 GradientAI 平台中的函数路由功能。该函数构建用于从 Tripadvisor API 获取实时航班数据,并允许代理在用户询问航班相关信息时调用此函数。这创建了一个上下文感知系统,提供实时、可操作的航班数据。

函数路由是 DigitalOcean 的 GradientAI 平台的一项功能,允许 AI 代理在需要实时数据或特定计算时调用外部函数。AI 不再编造航班信息,而是调用部署的函数,该函数从 API 获取实际的航班数据。

以下是其工作原理:

  1. 函数调用:AI 代理收到用户查询并自动调用部署的函数(我们的 flight-func/flight)
  2. 实时数据获取:该函数使用用户参数调用 Tripadvisor API
  3. 数据处理:返回并格式化实际的航班数据
  4. 用户响应:代理提供准确、可预订的航班信息

步骤 1:浏览器输入航班搜索

用户在浏览器中输入:

  • 出发城市:“纽约”
  • 到达城市:“伦敦”
  • 出发日期:“2024-06-15”
  • 行程类型:“往返”或“单程”
  • 返回日期:“2024-06-22”(往返)

步骤 2:Next.js 服务器操作进行航班搜索

服务器操作接收用户输入并创建一个详细的提示:

const prompt = `You are a travel agent and your task is to show users flights
along with flight numbers based on the source and destination they input.
Please provide flight information in the following format: Outbound Flights(${fromCity} to ${toCity} on ${departureDate}): Airline FlightNumber: Departing[Airport] at[Time], arriving[Airport] at [Time](Flight Duration:[Duration], non-stop/with layover) ${tripType==="round-trip"?`Return Flights(${toCity} to ${fromCity} on ${returnDate}): Airline FlightNumber: Departing[Airport] at[Time], arriving[Airport] at
[Time](Flight Duration:[Duration], non-stop/with layover)`:""}
For each flight, include: - The type of flight(Boeing 737, Airbus A320, etc.) - Airline name and flight number - Airport codes - Exact departure and arrival times - Flight duration - Layover information if applicable - Direct booking links from Skyscanner, Kayak, or Expedia Format your response in markdown with clear sections. Do NOT include any extra notes, disclaimers, or introductory text. Only output the flight details as described.`

步骤 3:DigitalOcean GradientAI 代理函数路由

DigitalOcean 的 GenAI 代理:

  1. 接收提示和用户参数
  2. 检测到需要实际的航班数据(航空公司、航班号、时间等)
  3. 调用函数路由:
    1. 调用部署的函数(flight-func/flight)在 flight-info 文件夹中
    2. 该函数执行代码调用 Tripadvisor API 并使用用户的航班搜索参数
    3. 返回实时的航班数据(航空公司、航班号、时间等)
  4. GenAI 代理接收这些数据并将其格式化为用户友好的响应
  5. 将完整的航班信息返回给你的服务器操作

步骤 4:响应返回到浏览器进行航班搜索

响应流程:

  1. 代理发送从 Tripadvisor API 返回的航班信息
  2. 服务器接收并处理响应:

const response = await client.chat.completions.create({
  model: "Llama 3.3 Instruct",
  messages: [{
    role: "system", content: "You are an expert travel agent who specializes in finding specific flight information and providing direct booking links. Your responses should be practical and focused on helping travelers find and book their flights easily. Use real-time flight data and provide accurate information.",
  }, { role: "user", content: prompt }, t], emperature: 0.7, max_tokens: 2000,
})
const content = response.choices[0]?.message?.content || "No response from AI"
return content

  1. 浏览器显示航班选项,用户可以看到真实、可预订的航班。

获取航班信息所使用的完整代码可以在这里找到。

使用 GradientAI 平台构建聊天界面

Nomado 还有一个聊天机器人,你可以使用它来讨论住宿选项以及访问地点的小贴士和技巧。在后端,我们使用代理路由在两个代理之间进行路由,并将网络爬虫 Nomad stays 作为住宿代理的知识库。

代理路由是指从代理指令中引用其他代理的能力。不同的代理可能针对特定任务进行训练或优化,或者具有不同的领域专业知识来处理不同类型的请求。通常包括两种类型的代理:

  • 父代理(在此情况下为住宿代理)处理一般对话并将特定请求路由到专门的子代理
  • 子代理(本地信息代理)针对特定领域或任务进行优化

逐步过程

步骤 1:浏览器输入聊天

用户在浏览器中输入:

  • 住宿查询:“在巴黎为我找住宿”或
  • 一般旅行查询:“我应该为日本带什么?”

步骤 2:父住宿代理和代理路由

父住宿代理:

  • 通过聊天机器人界面接收用户查询
  • 分析查询的意图和内容
  • 根据查询类型确定适当的路由:
    • 住宿查询 → 使用 Nomad stays 知识库直接处理
    • 旅行/本地信息查询 → 路由到使用 OpenAI 4o 模型的本地信息子代理
  • 对于住宿查询:使用从 Nomad stays 抓取的数据生成响应
  • 对于其他查询:委托给专门的子代理

步骤 3:响应处理

响应流程根据查询类型而变化:

对于住宿查询:

  • 父代理直接处理查询
  • 在 Nomad stays 知识库中搜索
  • 生成住宿推荐

对于旅行/本地信息查询:

  • 父代理路由到本地信息子代理
  • 子代理使用 OpenAI 4o 模型处理
  • 生成旅行小贴士、文化信息或本地建议
  • 将响应发送回父代理

步骤 4:响应返回到浏览器进行聊天

  • 用户接收具体、数据驱动的推荐
  • 通过父代理保持对话上下文

结束语

Nomado 是如何使用 GradientAI 平台将现实世界任务与 AI 功能连接起来的一个例子,而无需管理繁重的基础设施。如果你计划构建类似的东西,以下是一些可能会帮助你的事项:

  • 使用 Serverless 推理来生成文本或摘要等任务。
  • 使用函数路由插入实时 API,以确保你的 AI 保持最新数据并具有上下文感知能力。
  • 使用代理路由和知识库保持答案一致,特别是在你有特定领域的内容或多用例的情况下。

如果你想了解更多信息或扩展我所构建的内容,以下是一些有用的资源:

希望这能为你提供构建自己的 AI 驱动工作流程的起点。如果你想了解 Nomado 的内部工作原理,请随时查看开源代码并将其应用于你自己的想法:https://github.com/Haimantika/all-things-travel

如果你还需要进一步了解DigitalOcean的GPU Droplet 云服务器以及GradientAI平台中的详细功能,欢迎咨询 DigitalOcean中国区独家战略合作伙伴卓普云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值