DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东
随着假期的脚步日渐临近,环球影城等备受瞩目的主题游乐场,已然成为大人与孩子们心中不可或缺的节日狂欢圣地。然而,随之而来的庞大客流,却总让无数游客在欢乐的门槛前止步,那长长的排队队伍,无疑成为了他们畅享假日时光的最大阻碍。
游乐场内项目琳琅满目,每一个都散发着诱人的魅力,但时间却似乎总是不够用。如何在这人潮汹涌、时间紧迫的环境下,巧妙规划行程,确保每一次的游玩都能获得最大的快乐回报,这无疑是对每一位追求极限旅游体验的“特种兵”游客的严峻考验。
是选择那些刺激惊险的过山车,还是沉浸于梦幻般的童话世界?是优先体验那些人气爆棚的新项目,还是回归那些经典怀旧的老游乐?每一个选择,都关乎着游玩的质量与心情的愉悦。因此,提前做功课,了解各个项目的特点与游玩时长,制定一份详尽而周密的游玩攻略,便显得尤为重要。
不仅如此,游客们还需要灵活应变,根据实际情况及时调整计划。或许,一场突如其来的表演秀,会打乱原有的行程安排,但也可能因此收获意想不到的惊喜与感动。在这个充满变数与可能的游乐场里,每一次的转弯,都可能遇见不一样的风景;每一次的等待,也都可能转化为难忘的回忆。
所以,尽管排队是游玩中不可避免的一环,但只要我们借助于DeepSeek强大的人工智能功能,用心规划,巧妙应对,便能在有限的时间里,使得各位旅游“特种兵”尽情享受到游乐场带来的无尽欢乐与惊喜。
7.3.1 游乐场数据的准备
在这里,我们精心准备了针对不同游乐场景的详细地图,旨在为游客们提供更加便捷的游玩导航。在这些地图上,我们逐一标注了每个游乐项目的排队时间、视觉体验以及刺激指数,以帮助游客们更全面地了解各个项目的游玩感受。
(1)排队时间,我们在地图上以清晰的数据展示每个项目当前及预计的等待时长,让游客能够根据时间安排,灵活选择先玩哪个项目,从而避免在热门项目前长时间排队等候。
(2)视觉体验,是我们标注的另一个重要特征。不同的游乐项目带来的视觉震撼各不相同,有的项目让人仿佛置身于梦幻的童话世界,有的则展现出未来科技的奇幻色彩。通过地图上的视觉体验指数,游客可以根据自己的喜好,选择那些最能打动自己的游乐项目。
(3)刺激指数,则是为了满足那些追求极限刺激的游客而设计的。不同的游乐项目,其惊险程度各不相同。有的项目平缓舒适,适合全家共同参与;有的则惊心动魄,让人心跳加速。通过刺激指数的标注,游客可以根据自己的承受能力,选择合适的游乐项目,确保游玩的安全和愉快。
各个游乐场的地图和标注如图7-9~图7-12所示。
图7-9 环球影城
图7-10 香港迪士尼
图7-11 长隆欢乐世界
图7-12 上海迪士尼
可以看到,我们仔细的标注了各个游乐园中每个项目不同的特征,对其进行统计后,我们建立列表如下:
[{name:喷气背包飞行器,time:60,view:3,thrill:9},
{name:创极速光轮-雪佛兰呈现,time:50,view:7,thrill:10},
{name:抱抱龙冲天赛车,time:100,view:3,thrill:8},
{name:小熊维尼历险记,time:50,view:7,thrill:4},
{name:疯狂动物城,time:220,view:9,thrill:6},
{name:加勒比海盗-沉落宝藏之战,time:45,view:10,thrill:4},
{name:翱翔-飞跃地平线,time:130,view:10,thrill:8},
{name:雷鸣山漂流,time:130,view:4,thrill:9},
{name:小飞象,time:40,view:6,thrill:5},
{name:城堡迎宾阁,time:60,view:7,thrill:1},
{name:小矮人矿山车,time:145,view:3,thrill:8}];
其中time是耗费的时间,view为视觉指数,而thrill则是刺激指数。
7.3.2 普通大模型的迪士尼游玩求解攻略
我们首先完成基于普通问题的迪士尼游玩,即将数据传入到大模型中,要求其做出对应的回答。代码如下所示:
from openai import OpenAI
client = OpenAI(api_key="sk-c646e1c201d74777b54f45c60973f4f3", base_url="https://api.deepseek.com")system_prompy = """
你现在作为一个人工智能算法助手,有如下列表
[{name:喷气背包飞行器,time:60,view:3,thrill:9},
{name:创极速光轮-雪佛兰呈现,time:50,view:7,thrill:10},
{name:抱抱龙冲天赛车,time:100,view:3,thrill:8},
{name:小熊维尼历险记,time:50,view:7,thrill:4},
{name:疯狂动物城,time:220,view:9,thrill:6},
{name:加勒比海盗-沉落宝藏之战,time:45,view:10,thrill:4},
{name:翱翔-飞跃地平线,time:130,view:10,thrill:8},
{name:雷鸣山漂流,time:130,view:4,thrill:9},
{name:小飞象,time:40,view:6,thrill:5},
{name:城堡迎宾阁,time:60,view:7,thrill:1},
{name:小矮人矿山车,time:145,view:3,thrill:8}];
其中“游乐项目名称name”“用时time”“体验指数(视觉指数view、刺激指数thrill)”。
【示例】:{
问题: 游玩5个小时,玩哪些项目的组合刺激指数最大?
回答:亲爱的游客您好,根据您的问题经过严密计算后得出:
300分钟之内,刺激指数总和最大为36,总耗时300分钟。
【小熊维尼历险记】【耗时50分钟】【刺激指数:4】
【抱抱龙冲天赛车】【耗时100分钟】【刺激指数:8】
【创极速光轮-雪佛兰呈献】【耗时50分钟】【刺激指数:10】
【小飞象】【耗时40分钟】【刺激指数:5】
【喷气背包飞行器】【耗时60分钟】【刺激指数:9】}
请根据要求运算出结果并输出。
"""response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": system_prompy},{"role": "user", "content": "只有120分钟的时间,怎么玩视觉体验最大?"},],stream=False
)print(response.choices[0].message.content)
这段代码的主要功能是通过调用DeepSeek的API,利用一个预定义的system_prompt来回答用户关于游乐项目组合的问题。首先,代码导入了DeepSeek库并初始化了一个客户端,设置了API密钥和基础URL。接着,定义了一个系统提示(system_prompy),其中包含了一系列游乐项目的详细信息,如名称、用时、视觉指数和刺激指数。系统提示还包含了一个示例,展示了如何根据用户的问题计算并输出最佳的游乐项目组合。
在代码的第二部分,通过client.chat.completions.create方法向API发送请求,其中指定了使用的模型(deepseek-chat)、系统提示和用户的问题(“只有120分钟的时间,怎么玩视觉体验最大?”)。API会根据系统提示中的算法和用户的问题,计算出在120分钟内视觉体验最大的游乐项目组合,并将结果返回。最后,代码打印出API返回的结果,即最佳的游乐项目组合。运行结果读者可以自行尝试验证(建议多次)。
7.3.3 基于动态规划算法的迪士尼游玩求解攻略
动态规划(Dynamic Programming,DP)是一种在数学、计算机科学和经济学中用来找出多阶段决策过程中最优解的方法。在计算机科学中,动态规划通常用于优化递归问题,例如用于求解斐波那契数列,或者用于求解具有重叠子问题和最优子结构的问题。
在这个问题中,我们有一组游乐项目,每个项目都有各自的游玩时间(time)、景观评分(view)和刺激评分(thrill)。我们的目标是选择一组项目,使得总游玩时间不超过120分钟,同时最大化景观评分的总和。
动态规划算法比较复杂,读者可以跳过这一小节的学习直接学习大模型完成迪士尼游玩。
下面是我们使用动态规划完成的极限迪士尼游玩攻略的求解,代码如下所示:
projects = [
{"name":"喷气背包飞行器","time":60,"view":3,"thrill":9},
{"name":"创极速光轮-雪佛兰呈现","time":50,"view":7,"thrill":10},
{"name":"抱抱龙冲天赛车","time":100,"view":3,"thrill":8},
{"name":"小熊维尼历险记","time":50,"view":7,"thrill":4},
{"name":"疯狂动物城","time":220,"view":9,"thrill":6},
{"name":"加勒比海盗-沉落宝藏之战","time":45,"view":10,"thrill":4},
{"name":"翱翔-飞跃地平线","time":130,"view":10,"thrill":8},
{"name":"雷鸣山漂流","time":130,"view":4,"thrill":9},
{"name":"小飞象","time":40,"view":6,"thrill":5},
{"name":"城堡迎宾阁","time":60,"view":7,"thrill":1},
{"name":"小矮人矿山车","time":145,"view":3,"thrill":8}
]# 提取时间和景观评分
time = [proj['time'] for proj in projects]
view = [proj['view'] for proj in projects]
n = len(projects) # 项目总数
T = 120 # 总时间限制# 初始化动态规划数组和选择数组
dp = [[0] * (T + 1) for _ in range(n + 1)]
choices = [[-1] * (T + 1) for _ in range(n + 1)] # -1 表示未选择任何项目# 填充动态规划数组和选择数组
for i in range(1, n + 1):for j in range(1, T + 1):if j >= time[i - 1]:# 如果选择当前项目可以得到更大的景观评分,则更新dp和choicesif dp[i - 1][j - time[i - 1]] + view[i - 1] > dp[i - 1][j]:dp[i][j] = dp[i - 1][j - time[i - 1]] + view[i - 1]choices[i][j] = i - 1 # 记录选择了哪个项目(使用项目的索引)else:dp[i][j] = dp[i - 1][j]else:dp[i][j] = dp[i - 1][j]# 输出结果
print("最大景观评分总和:", dp[n][T])# 回溯以找出项目名称
def backtrack(choices, time, projects, total_time, current_index):if total_time == 0 or current_index == 0:return []if choices[current_index][total_time] == -1:# 没有在当前状态选择项目,继续向前回溯return backtrack(choices, time, projects, total_time, current_index - 1)else:# 找到了一个选择的项目,加入结果列表,并继续向前回溯chosen_proj_index = choices[current_index][total_time]chosen_proj_name = projects[chosen_proj_index]['name']remaining_time = total_time - time[chosen_proj_index]return [chosen_proj_name] + backtrack(choices, time, projects, remaining_time, chosen_proj_index)# 调用回溯函数并打印结果
selected_projects = backtrack(choices, time, projects, T, n)
print("构成最大景观评分总和的项目名称:")
for proj_name in selected_projects:print(" " + proj_name)
打印结果如下所示:
最大景观评分总和: 17构成最大景观评分总和的项目名称:加勒比海盗-沉落宝藏之战创极速光轮-雪佛兰呈现
可以看到,我们通过算法设计,获得了符合要求的结果,此时整体时间满足要求,同时也获取到最大的条件组合。
7.3.3 基于DeepSeek的旅游特种兵迪士尼大作战
在上述内容中,我们分别探讨了基于DeepSeek的基础迪士尼游玩攻略以及运用动态规划算法优化的迪士尼游玩攻略。显然,动态规划算法在特定条件下能够高效地给出满意的结果。然而,当面临不同的约束条件时,这种方法的局限性也显现出来了,它要求使用者必须具备相当丰富的算法知识和程序设计经验,才能灵活调整策略以适应新的情况。
相比之下,如果我们单纯依赖大型模型在有约束条件下进行计算,多次运行的结果可能会出现不一致的情况。这主要是因为大型模型的设计和运行逻辑并未与我们的特定算法需求紧密结合。因此,在计算过程中,它们可能无法全面、准确地捕捉到我们的具体需求,从而导致结果的不稳定性。
为了克服这些挑战,我们可以考虑将动态规划算法与大型模型相结合,以充分发挥两者的优势。具体来说,我们可以利用动态规划算法来构建基础的游玩攻略框架,确保在满足核心约束条件的前提下获得优化结果。同时,可以借助大型模型的强大计算能力,对动态规划算法生成的初步结果进行进一步的细化和优化,以适应更多复杂多变的实际场景。
下面就是我们设计的、基于DeepSeek的旅游特种兵迪士尼路径规划,代码如下所示:
from openai import OpenAIclient = OpenAI(api_key="sk-c646e1c201d74777b54f45c60973f4f3", base_url="https://api.deepseek.com")system_prompy = """
你现在作为一个人工智能算法助手,
根据下面提供的算法逻辑和【0-1背包问题】解题思路来处理景点游玩最优规划这个情景问题。
【代码算法逻辑及步骤】:
step1:分析问题,获得可用总时长$ztime(分钟);
step2:加载以下全部11组$data数据
$data = [{name:喷气背包飞行器,time:60,view:3,thrill:9},
{name:创极速光轮-雪佛兰呈现,time:50,view:7,thrill:10},
{name:抱抱龙冲天赛车,time:100,view:3,thrill:8},
{name:小熊维尼历险记,time:50,view:7,thrill:4},
{name:疯狂动物城,time:220,view:9,thrill:6},
{name:加勒比海盗-沉落宝藏之战,time:45,view:10,thrill:4},
{name:翱翔-飞跃地平线,time:130,view:10,thrill:8},
{name:雷鸣山漂流,time:130,view:4,thrill:9},
{name:小飞象,time:40,view:6,thrill:5},
{name:城堡迎宾阁,time:60,view:7,thrill:1},
{name:小矮人矿山车,time:145,view:3,thrill:8}];
其中“游乐项目名称name”、“用时time”、“体验指数(视觉指数view、刺激指数thrill)”。
step3:分析问题,设置对应要计算的指数(刺激指数:thrill;视觉指数:view);
step4:判断总耗时是否小于$data中的time最小值,如果小于则直接结束运算,说明不会存在最优解。如果大于等于则进行下一步;
step5:定义状态 dp[i][j],表示前 i 个物品在容量为 j 的背包下的最大值。
step6:初始化 dp 状态,dp[0][j] = 0,表示背包没有容量时的最大价值也就是 0。
step7:状态转移方程为 dp[i][j] = max(dp[i-1][j], dp[i-1][j - data[i].time] + data[i].thrill) if j > data[i].time else dp[i-1][j] 。表示在有足够容量的情况下,可以选择放入或者不放入当前的物品。
step8:求出 dp[len(data)][$ztime],该值就是最大的体验指数。
step9:通过 dp 状态表,反推出$data.name(项目名称)。
【示例】:{
问题: 游玩5个小时,玩哪些项目的组合刺激指数最大?
回答:亲爱的游客您好,根据您的问题经过严密计算后得出:
300分钟之内,刺激指数总和最大为36,总耗时300分钟。
【小熊维尼历险记】【耗时50分钟】【刺激指数:4】
【抱抱龙冲天赛车】【耗时100分钟】【刺激指数:8】
【创极速光轮-雪佛兰呈献】【耗时50分钟】【刺激指数:10】
【小飞象】【耗时40分钟】【刺激指数:5】
【喷气背包飞行器】【耗时60分钟】【刺激指数:9】}
请严格按照上述算法和输出要求,运算出结果并输出,不要超出约束条件。让我们一步一步来思考!"""response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": system_prompy},{"role": "user", "content": "只有120分钟的时间,怎么玩视觉体验最大,并且刺激指数最大?"},],stream=False
)print(response.choices[0].message.content)
输出结果如下所示:
亲爱的游客您好,根据您的问题经过严密计算后得出:120分钟之内,视觉指数总和最大为17,总耗时120分钟。【加勒比海盗-沉落宝藏之战】【耗时45分钟】【视觉指数:10】【小熊维尼历险记】【耗时50分钟】【视觉指数:7】
此时看到,输出的结果也较好地满足了需求,尽管细节上还有一定的出入,但是大模型与基于普通动态规划算法得到的结果在总体约束上基本保持一致。