如何使用 GMI 雲構建 AI 代理系列的第 2 部分
Aliquet morbi justo auctor cursus auctor aliquam. Neque elit blandit et quis tortor vel ut lectus morbi. Amet mus nunc rhoncus sit sagittis pellentesque eleifend lobortis commodo vestibulum hendrerit proin varius lorem ultrices quam velit sed consequat duis. Lectus condimentum maecenas adipiscing massa neque erat porttitor in adipiscing aliquam auctor aliquam eu phasellus egestas lectus hendrerit sit malesuada tincidunt quisque volutpat aliquet vitae lorem odio feugiat lectus sem purus.
Viverra mi ut nulla eu mattis in purus. Habitant donec mauris id consectetur. Tempus consequat ornare dui tortor feugiat cursus. Pellentesque massa molestie phasellus enim lobortis pellentesque sit ullamcorper purus. Elementum ante nunc quam pulvinar. Volutpat nibh dolor amet vitae feugiat varius augue justo elit. Vitae amet curabitur in sagittis arcu montes tortor. In enim pulvinar pharetra sagittis fermentum. Ultricies non eu faucibus praesent tristique dolor tellus bibendum. Cursus bibendum nunc enim.
Mattis quisque amet pharetra nisl congue nulla orci. Nibh commodo maecenas adipiscing adipiscing. Blandit ut odio urna arcu quam eleifend donec neque. Augue nisl arcu malesuada interdum risus lectus sed. Pulvinar aliquam morbi arcu commodo. Accumsan elementum elit vitae pellentesque sit. Nibh elementum morbi feugiat amet aliquet. Ultrices duis lobortis mauris nibh pellentesque mattis est maecenas. Tellus pellentesque vivamus massa purus arcu sagittis. Viverra consectetur praesent luctus faucibus phasellus integer fermentum mattis donec.
Commodo velit viverra neque aliquet tincidunt feugiat. Amet proin cras pharetra mauris leo. In vitae mattis sit fermentum. Maecenas nullam egestas lorem tincidunt eleifend est felis tincidunt. Etiam dictum consectetur blandit tortor vitae. Eget integer tortor in mattis velit ante purus ante.
“Lacus donec arcu amet diam vestibulum nunc nulla malesuada velit curabitur mauris tempus nunc curabitur dignig pharetra metus consequat.”
Commodo velit viverra neque aliquet tincidunt feugiat. Amet proin cras pharetra mauris leo. In vitae mattis sit fermentum. Maecenas nullam egestas lorem tincidunt eleifend est felis tincidunt. Etiam dictum consectetur blandit tortor vitae. Eget integer tortor in mattis velit ante purus ante.
在 第一部分我們通過定義願景、使用案例和成功標準,為我們的 AI 代理人奠定了基礎。現在,是時候將這個願景實現。在第二部分中,我們將逐步介紹構建最低可行產品 (MVP) AI 代理程式的過程,該程序可幫助用戶根據相關性、成本和潛在的投資報酬率決定哪些行業會議值得參加。
讓我們直接深入了解構建。
在構建任何功能之前,我們需要一個堅實的開發基礎。這包括選擇正確的工具、配置我們的環境,以及設置可實現快速迭代的工作流程。
現在,設計怎麼樣?以下是從輸入到預期輸出的整體工作流程:
我們將每個步驟分為個別的模塊,以防因某種原因我們決定我們想改變事情。該架構實現了靈活性,並允許系統的不同部分(例如內容檢索或投資回報(ROI)評分)獨立進化,而不會破壞系統的其他部分。
或者,我們希望這樣!
為了我們的目的,我們將使用具有 OpenAI API 兼容性的 GMI 託管 LLM 端點,但您可以使用任何具有類似配置的端點執行此操作。在我們的情況下,只需轉到設置 → 添加「模型提供商」→ 添加與 OpenAI API 兼容。
前往 https://cloud.dify.ai/apps,確保您已登錄,然後您可以開始創建一個項目。為了我們的目的,我們將使用聊天流程。
我們有我們的流程,現在我們組裝每個單獨的模塊。首先,讓我們看看哪些將被視為輸入,因為正如我們所知:垃圾進入 = 垃圾出!
我們的 AI 代理人需要找出哪些行業活動值得將我們的團隊發送到,因此我們將需要為其提供一種方法,以便基礎 LLM 處理的格式來搜索、提取和彙總該信息。
是時候建造了。
添加輸入參數:
透過 API 搜尋
我們將在搜索結果上添加一個迭代器,以了解源上下文。這個步驟很重要,因為搜索引擎會根據相關性排序的許多結果。事件網站和聚合器往往是頂級結果,迭代器的工作是提取有關這些事件的詳細信息。
這就是火焰火花進行抓取的地方。
加入 GMI 法學碩士
使用者提示:
**Instructions:**
You are provided with Markdown content containing information about one or more events. Your task is to extract the event details and return them in a list of JSON objects. Each JSON object should represent a single event and conform to the following schema:
```json
{
"title": "string",
"start_date": "string",
"location": "string",
"topic/focus": "string",
"audience": "string",
"summary": "string"
}
```
Important Considerations:
Strict Adherence to Schema: Ensure that the output is a valid JSON array containing JSON objects that strictly adhere to the provided schema. Do not include any extra text or explanations outside the JSON array.
Handle Missing Information: If the Markdown content does not provide information for a particular field in the JSON schema, set the value of that field to "N/A".
Multiple Events: If the Markdown describes multiple events, return a JSON array containing one JSON object for each event.
Markdown Variations: Be prepared to handle variations in how event information might be presented in the Markdown. Look for keywords like "Date:", "Time:", "Location:", "Topic:", "Audience:", "Summary:", etc., but also be able to infer information from surrounding text.
Data Extraction: Extract the most relevant information for each field. For example, for the "time" field, extract the start date of the event in format of YYYY-MM-DD. For the "summary" field, provide a concise summary of the event.
JSON Output Only: The only output you should provide is the JSON array. Do not include any introductory or concluding remarks.
Markdown Content:
<Scrape text>
此時,您需要將 LLM 輸出解析為 JSON 格式。 通過轉換為 JSON(結構化格式),這使下游步驟可以輕鬆準確地處理結果。
這是我們使用的代碼:
import json
import re
def main(arg1: str) -> dict:
json_blocks = re.findall(r'(\[\s*\{.*?\}\s*\])', arg1, re.DOTALL)
all_events: List[dict] = []
for block in json_blocks:
try:
parsed_str = block.encode('utf-8').decode('unicode_escape')
parsed_json = json.loads(parsed_str)
# If the parsed JSON is a list, extend the result
if isinstance(parsed_json, list):
all_events.extend(parsed_json)
# If it's a single object, append it
elif isinstance(parsed_json, dict):
all_events.append(parsed_json)
except json.JSONDecodeError:
continue
return {
"events": all_events
}
接下來是什麼?好吧,我們現在有輸入數據,但在 AI 代理程序開始處理之前,需要清理和排序它。因此,現在是時候從不同搜索結果彙總結構化事件,刪除重複和按日期排序了。
這是我們使用的代碼:
import json
from datetime import datetime
def main(arg1: list) -> dict:
unique_events = {event["title"]: event for event in arg1}.values()
def sort_key(event):
try:
return datetime.strptime(event["start_date"], "%Y-%m-%d")
except ValueError:
return datetime.max # Assign max date to push invalid dates to the end
sorted_events = sorted(unique_events, key=sort_key)
sorted_events = sorted_events
return {
"events": sorted_events,
}
這就是數據輸入步驟!到目前為止,我們已經創建了一個工作流程模式:
接下來,是時候教我們的代理人在這些數據中搜索我們希望它做的事情了。
現在,我們已經構建了一個簡單的模式(撰寫網絡查詢 → 網絡搜索 → 使用 LLM 解析輸出),我們可以利用它在確定 ROI 時搜索兩個關鍵因素: 機票價格和酒店價格
注意:為了更準確/高級搜索(例如,帶折扣的股票價格),我們可以擴展此步驟,詢問專門為此目的構建的單獨代理商。
現在,我們彙總結果和輸出。
沒有驗證,任何 MVP 都不會完成。我們執行了多輪測試,以確保代理商提供價值。
我們檢查了:
我們與內部利益相關者分享 MVP,以及早收集反饋。基於此,我們:
我們還:
最後的階段是使 MVP 進入可用的狀態,進行更廣泛的測試。
我們測試了兩種部署策略:
隨著核心工作,未來的版序可以:
展望未來,潛在的下一個功能包括:
這個 AI 代理起初是一個簡單的想法 —— 幫助忙碌的專業人士決定哪些活動值得參加。通過方法開發、反覆測試和正確的工具,我們通過精簡、靈活的 MVP 將這個想法實現。
在第 3 部分中,我們將探討如何將此 MVP 發展為可生產的系統,以最佳化效能,並將其更深入整合到業務決策工作流程中。
在此之前,快速建置,保持好奇心,並讓 AI 完成重大工作。
順便說一句,你看過我們的 構建 AI 驅動的語音翻譯器指南?它只使用開源工具!
構建無限制的 AI!