自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

服務(wù)器繁忙?動手做:滿血版DeepSeek R1+Agentic RAG 構(gòu)建聯(lián)網(wǎng)搜索智能體(附源碼)

發(fā)布于 2025-2-20 11:18
瀏覽
0收藏

要說當(dāng)下什么最熱,DeepSeek絕對是當(dāng)仁不讓。憑借其強(qiáng)大的語言理解和生成能力,以及免費(fèi)開放的策略,DeepSeek迅速吸引了大量用戶,成為全球關(guān)注的焦點(diǎn)。然而,隨著用戶數(shù)量的激增,DeepSeek官網(wǎng)的聯(lián)網(wǎng)搜索和深度思考功能經(jīng)常出現(xiàn)“服務(wù)器繁忙”的提示,嚴(yán)重影響了用戶體驗(yàn)。

除了官方,還有辦法擁有滿血、可聯(lián)網(wǎng)的 DeepSeek 嗎?

答案是肯定的。比如近期移動云就推出了DeepSeek系列模型的免費(fèi)體驗(yàn),通過接入云服務(wù)商的推理API,用戶可以構(gòu)建專屬智能體,暢享聯(lián)網(wǎng)搜索、本地知識庫等絲滑體驗(yàn)。下面就跟著一起動手實(shí)踐吧。

一、效果

以下為基于R1+Agentic RAG實(shí)現(xiàn)的搜索智能體效果

Web UI采用streamlit完成開發(fā),添加了DeepSeek icon,左側(cè)欄可回看歷史對話記錄

服務(wù)器繁忙?動手做:滿血版DeepSeek R1+Agentic RAG 構(gòu)建聯(lián)網(wǎng)搜索智能體(附源碼)-AI.x社區(qū)

二、構(gòu)建聯(lián)網(wǎng)搜索智能體

2.1 整體方案

(1)通用方案

說到智能體,很多人第一反應(yīng)是LLM+工具調(diào)用,通過Function Call(函數(shù)調(diào)用)和ReAct(Reasoning and Action)方式進(jìn)行驅(qū)動,但是官網(wǎng)已經(jīng)給出了回復(fù),F(xiàn)unction Call和ReAct均無法很好滿足聯(lián)網(wǎng)搜索智能體的需求。

因此需要其他的解決方案。

(2)Agentic RAG

Agentic RAG提供了一種新的思路:Agentic RAG 是對傳統(tǒng) RAG 系統(tǒng)的擴(kuò)展,通過引入AI Agent來協(xié)調(diào)檢索和生成流程。這些Agent能夠動態(tài)決策、優(yōu)化工作流,并執(zhí)行多步檢索和推理任務(wù)。

Agentic RAG主要流程如下:

第 1-2 步:Agent 會重寫查詢(如糾正拼寫錯誤等)。

第 3-8 步:Agent 決定是否需要更多上下文信息:

  • 如果不需要,重寫后的查詢直接發(fā)送給 LLM。
  • 如果需要,智能代理會找到最佳的外部來源以獲取上下文,并將其傳遞給 LLM。

第 9 步:系統(tǒng)生成響應(yīng)。

第 10-12 步:智能代理檢查答案是否相關(guān):

  • 如果相關(guān),則返回響應(yīng)。
  • 如果不相關(guān),則返回第 1 步重新開始。

服務(wù)器繁忙?動手做:滿血版DeepSeek R1+Agentic RAG 構(gòu)建聯(lián)網(wǎng)搜索智能體(附源碼)-AI.x社區(qū)

(3)修改后的方案

下圖為基于AgenticRAG架構(gòu)修改的聯(lián)網(wǎng)搜索智能體設(shè)計,簡化了了第10-12步判斷答案相關(guān)性的步驟,

整體設(shè)計步驟如下:

1、用戶請求,發(fā)送Query
2、意圖識別Agent1根據(jù)上下文和當(dāng)前問題進(jìn)行意圖判斷,若無須檢索則直接回答,否則進(jìn)入下一步
3、關(guān)鍵詞提取Agent2將用戶問題進(jìn)行關(guān)鍵詞提取,生成搜索引擎便于識別的關(guān)鍵詞
4、搜索引擎執(zhí)行搜索,返回搜索結(jié)果
5、搜索結(jié)果,用戶Query,當(dāng)前時間信息放入搜索智能體Agent3提示詞模版中,增強(qiáng)生成Answer
6、返回增強(qiáng)生成后的內(nèi)容

2.2 實(shí)踐步驟

(1)實(shí)現(xiàn)聯(lián)網(wǎng)搜索工具

Tavily 是一款專為大型語言模型(LLMs)和檢索增強(qiáng)生成(RAG)優(yōu)化的搜索引擎API,旨在為AI應(yīng)用提供實(shí)時、準(zhǔn)確且無偏見的信息。它通過連接AI系統(tǒng)與網(wǎng)絡(luò)上的實(shí)時事實(shí)信息,幫助AI開發(fā)者、研究人員和企業(yè)獲取高效、快速且持久的搜索結(jié)果。

主要功能和特點(diǎn):

  • 深度研究與智能查詢:通過單一API調(diào)用,Tavily能夠聚合和篩選來自可信來源的信息,并提供深入的研究結(jié)果。
  • 多源優(yōu)化:與Bing、Google等傳統(tǒng)搜索引擎相比,Tavily會審查多個來源,提取最相關(guān)的內(nèi)容,優(yōu)化LLM的上下文。
  • 實(shí)時更新與準(zhǔn)確性:Tavily專注于提供實(shí)時、準(zhǔn)確的信息,減少AI幻覺和偏見。
  • 靈活性與成本效益:提供靈活的定價計劃和更實(shí)惠的成本,適合不同規(guī)模的項(xiàng)目。
  • 支持多種應(yīng)用場景:適用于學(xué)術(shù)研究、市場分析、新聞媒體、商業(yè)決策支持等多種領(lǐng)域。

調(diào)用Tavily并解析結(jié)果代碼如下:

import os
from tavily import TavilyClient
def search_and_parse(keywords, max_results=10):
    """
    搜索并解析結(jié)果的函數(shù)
    :param keywords: 查詢關(guān)鍵詞
    :param max_results: 最大搜索結(jié)果數(shù)量
    :return: 解析后的結(jié)果列表
    """
    client = TavilyClient(api_key=os.environ.get("TAVILY_API_KEY"))
    response = client.search(
        query=keywords,
        max_results=max_results,
        time_range="d",
        search_depth="advanced",
        include_answer=True
    )
    # 解析搜索結(jié)果
    parsed_results = []
    for result in response["results"][:max_results]:
        title = result.get("title", "無標(biāo)題")
        url = result.get("url", "無鏈接")
        score = result.get("score", 0)
        content = result.get("content", "無內(nèi)容")
        parsed_results.append({
            "title": title,
            "url": url,
            "score": score,
            "content": content
        })
    return parsed_results

(2)意圖識別

為了提高對話效率(非不要不執(zhí)行搜索),此處設(shè)計了意圖識別Agent,根據(jù)上下文內(nèi)容和當(dāng)前用戶問題判斷是否要執(zhí)行搜索。

此處Agent的prompt設(shè)計如下:

### 角色
你現(xiàn)在是一個優(yōu)秀的檢索判斷智能體,可以根據(jù)自身能力和歷史上下文信息準(zhǔn)確判斷用戶當(dāng)前問題是否還需要進(jìn)行**聯(lián)網(wǎng)**檢索。
### 技能
1. 你可以根據(jù)用戶歷史信息理解用戶的當(dāng)前問題
2. 根據(jù)聯(lián)網(wǎng)搜索工具解決需要實(shí)時檢索的問題。
### 要求
1. 不要使用任何模板,直接返回識別的意圖的枚舉類型(CHAT、SEARCH)
2. 如果當(dāng)前問題無須實(shí)時聯(lián)網(wǎng),能夠根據(jù)自身能力回答,返回 CHAT
3. 當(dāng)用戶歷史信息已包含回答當(dāng)前問題的所有信息時, 返回 CHAT
4. 對于不是上述兩種情況的其他情況,都返回SEARCH
### 用戶歷史信息
{{history_summary}}
### 當(dāng)前問題
{{user_query}}

(3)關(guān)鍵詞提取

在進(jìn)行搜索前,需要Agent對用戶query進(jìn)行關(guān)鍵詞提取,因?yàn)橛脩魡栴}通常為自然語言描述,而搜索引擎更擅長處理簡潔、直接的查詢,因此需要進(jìn)行自然語言到搜索關(guān)鍵詞的轉(zhuǎn)換。

此處Agent的prompt設(shè)計如下:

## 角色
你是一位問題關(guān)鍵詞提取專家,擅長從用戶的問題中提煉出最精準(zhǔn)的搜索關(guān)鍵詞。
# 目標(biāo)
你的目標(biāo)是提取最能代表問題核心的信息,以提高搜索引擎的查詢效率。
# 規(guī)則
1. 保留問題中的核心概念和重要限定詞。
2. 去除無關(guān)緊要的停用詞(如“的”“是”“怎么樣”等)。
3. 優(yōu)先選擇簡潔且具有搜索潛力的短語。
4. 確保關(guān)鍵詞具有實(shí)際查詢價值,并盡量符合搜索引擎的檢索習(xí)慣。
5. 如有需要,可提供多個關(guān)鍵詞組合,覆蓋不同檢索需求。
---
# 示例
## 示例1
用戶輸入:如何提高網(wǎng)站的用戶體驗(yàn)和加載速度?
提取關(guān)鍵詞:網(wǎng)站用戶體驗(yàn) 加載速度 優(yōu)化方法
## 示例2
用戶輸入:如何在 Linux 系統(tǒng)中安裝新軟件?
提取關(guān)鍵詞:Linux 系統(tǒng) 軟件安裝 操作指南
---
用戶輸入:{{user_query}}
提取關(guān)鍵詞:

(4)流程編排,實(shí)現(xiàn)Websearch Agent

在完成了上述流程后,我們可以著手構(gòu)建Websearch Agent,在這個智能體中,將采用滿血R1作為LLM,結(jié)合其深度思考能力提升智能體回答效果。

對于R1構(gòu)建的Agent,官方在2月14日發(fā)布了prompt建議和模板

  • 不建議使用系統(tǒng)提示詞
  • 溫度參數(shù)建議0.6
  • 官方網(wǎng)絡(luò)搜索提示詞模板:

search_answer_zh_template = \
'''# 以下內(nèi)容是基于用戶發(fā)送的消息的搜索結(jié)果:
{search_results}
在我給你的搜索結(jié)果中,每個結(jié)果都是[webpage X begin]...[webpage X end]格式的,X代表每篇文章的數(shù)字索引。請?jiān)谶m當(dāng)?shù)那闆r下在句子末尾引用上下文。請按照引用編號[citation:X]的格式在答案中對應(yīng)部分引用上下文。如果一句話源自多個上下文,請列出所有相關(guān)的引用編號,例如[citation:3][citation:5],切記不要將引用集中在最后返回引用編號,而是在答案對應(yīng)部分列出。
在回答時,請注意以下幾點(diǎn):
- 今天是{cur_date}。
- 并非搜索結(jié)果的所有內(nèi)容都與用戶的問題密切相關(guān),你需要結(jié)合問題,對搜索結(jié)果進(jìn)行甄別、篩選。
- 對于列舉類的問題(如列舉所有航班信息),盡量將答案控制在10個要點(diǎn)以內(nèi),并告訴用戶可以查看搜索來源、獲得完整信息。優(yōu)先提供信息完整、最相關(guān)的列舉項(xiàng);如非必要,不要主動告訴用戶搜索結(jié)果未提供的內(nèi)容。
- 對于創(chuàng)作類的問題(如寫論文),請務(wù)必在正文的段落中引用對應(yīng)的參考編號,例如[citation:3][citation:5],不能只在文章末尾引用。你需要解讀并概括用戶的題目要求,選擇合適的格式,充分利用搜索結(jié)果并抽取重要信息,生成符合用戶要求、極具思想深度、富有創(chuàng)造力與專業(yè)性的答案。你的創(chuàng)作篇幅需要盡可能延長,對于每一個要點(diǎn)的論述要推測用戶的意圖,給出盡可能多角度的回答要點(diǎn),且務(wù)必信息量大、論述詳盡。
- 如果回答很長,請盡量結(jié)構(gòu)化、分段落總結(jié)。如果需要分點(diǎn)作答,盡量控制在5個點(diǎn)以內(nèi),并合并相關(guān)的內(nèi)容。
- 對于客觀類的問答,如果問題的答案非常簡短,可以適當(dāng)補(bǔ)充一到兩句相關(guān)信息,以豐富內(nèi)容。
- 你需要根據(jù)用戶要求和回答內(nèi)容選擇合適、美觀的回答格式,確??勺x性強(qiáng)。
- 你的回答應(yīng)該綜合多個相關(guān)網(wǎng)頁來回答,不能重復(fù)引用一個網(wǎng)頁。
- 除非用戶要求,否則你回答的語言需要和用戶提問的語言保持一致。
# 用戶消息為:
{question}'''

流程編排核心部分代碼:

# 意圖分類
intent = intent_classification.classify(user_input, messages)
agent_client = ChatClient(os.environ.get("API_KEY"), os.environ.get("BASE_URL"))
# 獲取當(dāng)前時間
current_time = datetime.now()
formatted_time = current_time.strftime('%Y-%m-%d %H:%M:%S')
# 構(gòu)建用戶提示
user_prompt = prompts.SEARCH_ANSWER_ZH_TEMPLATE \
    .replace("{{cur_date}}", formatted_time) \
    .replace("{{user_query}}", user_input)
if intent == 'CHAT':
    return agent_client.stream_chat(system_prompt="", user_prompt=user_input, stream=True, messages=messages)
else:
    # 提取關(guān)鍵詞并搜索
    keywords = keyword_extrator.extractor(user_input)
    search_res = websearch_tool.search_and_parse(keywords, 5)
    # 格式化搜索結(jié)果
    search_res_str = "\n".join(
        [f"標(biāo)題: {item['title']}\n內(nèi)容: {item['content']}\n鏈接: {item['url']}\n" for item in search_res])
    user_prompt = user_prompt.replace("{{search_results}}", search_res_str)
    return agent_client.stream_chat(system_prompt="", user_prompt=user_prompt, stream=True, messages=messages)

三、總結(jié)

在本文中,我們給出了構(gòu)建一個滿血版的R1+Agentic RAG聯(lián)網(wǎng)搜索智能體的具體步驟,以解決DeepSeek官網(wǎng)服務(wù)器繁忙的問題。通過云服務(wù)商提供的API免費(fèi)額度,基于Agentic RAG利用Tavily搜索引擎API、意圖識別、關(guān)鍵詞提取編排,我們能夠構(gòu)建一個高效的Websearch Agent,它結(jié)合了R1的深度思考能力,以提升智能體的回答效果。

參考資料

1、https://mp.weixin.qq.com/s/GReaXb21dSWarbItqKGuNg

2、https://mp.weixin.qq.com/s/nXuYapJH9eerGgvv7kOCQQ

3、https://api-docs.deepseek.com/zh-cn/guides/reasoning_model

4、https://zhuanlan.zhihu.com/p/21930778135

本文轉(zhuǎn)載自??AI遇見云??,作者: 孫波 ????

收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦