在AgentScope中實現結構化輸出

在AgentScope中實現結構化輸出

概述

在AgentScope框架中,結構化輸出功能允許開發者定義明確的輸出模式,確保AI模型的響應符合預期的格式和約束。本教程將介紹如何使用AgentScope的structured_model參數來實現結構化輸出。

結構化輸出的優勢

  1. 數據一致性:確保模型輸出始終符合預定義的結構
  2. 類型安全:使用Pydantic模型進行數據驗證
  3. 自動修正:當模型輸出不符合規范時,系統會自動嘗試修正
  4. 簡化處理:直接獲得結構化數據,無需手動解析文本

實現步驟

1. 定義Pydantic模型

首先,需要定義描述期望輸出結構的Pydantic模型:

from pydantic import BaseModel, Field
from typing import Literalclass TableModel(BaseModel):"""人員信息表模型"""name: str = Field(description="人員姓名")age: int = Field(description="人員年齡", ge=0, le=120)intro: str = Field(description="人員簡介")honors: list[str] = Field(description="獲得的榮譽列表")class ChoiceModel(BaseModel):"""選擇模型"""choice: Literal["apple", "banana", "orange"] = Field(description="選擇的水果,請從apple、banana或orange中選擇一個")

2. 配置Agent并使用結構化輸出

創建Agent時,通過在調用時傳遞structured_model參數來啟用結構化輸出:

# 創建Agent
agent = ReActAgent(name="Friday",sys_prompt="You are a helpful assistant named Friday.",model=DashScopeChatModel(api_key=os.environ.get("DASHSCOPE_API_KEY"),model_name="qwen-plus",stream=True,),formatter=DashScopeChatFormatter(),toolkit=toolkit,memory=InMemoryMemory(),
)

實際運行示例

   query_msg_1 = Msg("user","Please introduce Einstein","user",)res = await agent(query_msg_1, structured_model=TableModel)print("Structured Output 1:\n""```\n"f"{json.dumps(res.metadata, indent=4)}\n""```",)query_msg_2 = Msg("user","Choose one of your favorite fruit","user",)res = await agent(query_msg_2, structured_model=ChoiceModel)print("Structured Output 2:\n""```\n"f"{json.dumps(res.metadata, indent=4)}\n""```",)

運行結果

	(agentscope) PS D:\agent-llm\agentscope\mytest> uv run .\structout.pyFriday: Albert Einstein, a renowned physicist who developed the theory of relativity, lived to be 144 years old. He was awarded prestigious honors such as the Nobel Prize in Physics and the Copley Medal.system: {"type": "tool_result","id": "call_323f5479d5984d8189e1c0","name": "generate_response","output": [{"type": "text","text": "Arguments Validation Error: 1 validation error for TableModel\nage\n  Input should be less than or equal to 120 [type=less_than_equal, input_value=144, input_type=int]\n    For further information visit https://errors.pydantic.dev/2.11/v/less_than_equal"}]}Friday: Albert Einstein, a renowned physicist who developed the theory of relativity, lived to be 76 years old. He was awarded prestigious honors such as the Nobel Prize in Physics and the Copley Medal.Structured Output 1:```{"name": "Albert Einstein","age": 76,"intro": "Einstein was a renowned physicist who developed the theory of relativity.","honors": ["Nobel Prize in Physics","Copley Medal"]}```Friday: My favorite fruit is banana because it is delicious and nutritious.Structured Output 2:```{"choice": "banana"}```

關鍵特性

  1. 自動驗證與修正:如示例中年齡超出范圍時的自動修正
  2. 類型約束:支持各種Pydantic字段類型和約束條件
  3. 枚舉限制:使用Literal類型限制可選值
  4. 錯誤處理:提供清晰的錯誤信息指導修正

總結

AgentScope的結構化輸出功能通過Pydantic模型提供了強大的輸出約束和驗證機制。開發者可以:

  1. 定義精確的輸出結構
  2. 設置數據類型和取值范圍約束
  3. 確保模型輸出符合業務邏輯要求
  4. 減少后處理代碼的復雜性

這一功能特別適用于需要標準化API輸出、數據處理管道或確保數據一致性的應用場景。

通過結合AgentScope的ReActAgent和結構化輸出,開發者可以構建更加可靠和可控的AI應用系統。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96510.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 磁盤I/O高占用進程排查指南:從定位到分析的完整流程

在Linux服務器運維工作中,磁盤I/O瓶頸是導致系統性能下降的常見原因之一。當服務器出現響應緩慢、應用卡頓等問題時,及時定位并解決高I/O占用進程就顯得尤為重要。本文將從核心思路出發,通過“確認問題-定位磁盤-鎖定進程-深入分析”四個步驟…

解決React中通過外部引入的css/scss/less文件更改antDesign中Modal組件內部的樣式不生效問題

不生效原因Ant Design 的 Modal 默認通過 ReactDOM.createPortal 掛在 <body> 下&#xff0c;與你的組件樹平級&#xff0c;所以寫在 .module.css / scoped less 里的選擇器根本匹配不到它&#xff0c;就算寫全局樣式&#xff0c;也可能因為權重不足或異步掛載時機而“看…

day41 51單片機最小系統、GPIO控制、時序邏輯器件(74HC138/595)與LED點陣驅動原理

day41 51單片機最小系統、GPIO控制、時序邏輯器件&#xff08;74HC138/595&#xff09;與LED點陣驅動原理一、嵌入式系統基礎概念 1.1 嵌入式系統定義先設計硬件&#xff0c;基于硬件設計軟件實現一個具體的功能 —— 專用的計算機系統硬件/軟件可剪裁&#xff1a;根據功能需求…

html列表總結補充

1.有序列表的type屬性不同的type值表示不同的排序標號1 表示列表項目用數字標號&#xff08;1,2,3...&#xff09; 1 a 表示列表項目用小寫字母標號&#xff08;a,b,c...&#xff09; 2 A 表示列表項目用大寫字母標號&#xff08;A,B,C...&#xff09; 3 i 表示列表項目用小寫羅…

smartctl Current_Pending_Sector 硬盤待處理扇區

smartctl -a /dev/sdae當前值: 312 個待處理扇區 嚴重警告信號&#xff0c;硬盤發現了 312 個可疑扇區&#xff0c;正在等待重新分配 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 312讀取錯誤頻發 錯誤計數: 38 次 ATA 錯誤 …

MATLAB1-基本操作和矩陣輸入-臺大郭彥甫

目錄 基礎的指令 format 矩陣和向量 找出某行某列的矩陣元素 快速打出多個矩陣或者向量 矩陣連接 矩陣計算 一些特殊矩陣fuction 矩陣相關函數 基礎的指令 clc 清空命令行窗口 clear all 清空工作區的全部變量 who 將工作區的全部變量顯示出來 whos 工作區的變量信息詳…

【CSS 3D 交互】實現精美翻牌效果:從原理到實戰

效果圖 前言 在現代網頁設計中&#xff0c;交互效果是提升用戶體驗的重要手段。3D 翻牌效果作為一種常見的交互模式&#xff0c;廣泛應用于卡片展示、問答切換、產品詳情等場景。本文將詳細介紹如何使用 CSS 3D 技術實現一個精美的翻牌效果&#xff0c;并深入解析其實現原理。…

Python核心技術開發指南(062)——靜態方法

版權聲明 本文原創作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 靜態方法的定義 靜態方法是類中定義的一種特殊方法,它不需要依賴類實例或類本身即可調用,也不隱含傳遞self(實例引用)或cls(類引用)參數。在Python中,通過@staticmethod裝飾器來定義靜態…

炒股進階理論知識

學完前面的《從零開始學炒股》這樣的入門課程后&#xff0c;你已經有了一個基本的框架&#xff0c;接下來需要做的是深化、拓展和建立自己的交易系統。以下是為你量身定制的后續學習路徑和理論知識建議&#xff0c;分為幾個核心模塊&#xff1a;模塊一&#xff1a;技術分析的深…

華為OD機試真題-跳馬-OD統一考試(C卷)

題目描述: 馬是象棋(包括中國象棋和國際象棋)中的棋子,走法是每步直一格再斜一格,即先橫著或直著走一格,然后再斜著走一個對角線,可進可退,可越過河界,俗稱“馬走‘日’字。 給頂m行n列的棋盤(網格圖),棋盤上只有有棋子象棋中的棋子“馬”,并且每個棋子有等級之分,…

PyTorch 模型保存與加載 (速查版)

文章目錄1. 推理用: 保存 & 加載權重 (最常見)2. 繼續訓練用: 保存 & 加載完整狀態3. 微調用: 部分加載 (分類頭不同等情況)1. 推理用: 保存 & 加載權重 (最常見) import torch import torch.nn as nnmodel nn.Linear(10, 2)# 保存權重 torch.save(model.state_d…

oneshape acad數據集 sam-dataset

Full Text Search - Hugging Face sketchai (Sketch AI)

0913刷題日記

今日計劃10道1/10兩眼一睜就是刷209. 長度最小的子數組target 396893380 超時頭疼看下題解我的問題在于&#xff0c;中間有一個又寫了一個遍歷&#xff0c;思路和滑動窗口差不多&#xff0c;但是那個遍歷就把時間倍數了。頭疼還能做題&#xff0c;你很棒了,身體健康最重要。沒…

【JAVA】網絡編程

引言 在學習網絡編程之前&#xff0c;我們編寫的程序幾乎都是“單機版”的——只能在本地運行&#xff0c;自娛自樂&#xff0c;無法與其他主機&#xff08;用戶&#xff09;進行交互。 有些同學可能會產生誤解&#xff1a;既然 Java 號稱“一次編譯&#xff0c;到處運…

HTML標簽關系詳解:構建網頁的骨架結構

前言 在上一篇教程中&#xff0c;我們學習了HTML5的基本結構。今天&#xff0c;讓我們深入探討HTML標簽之間的關系。理解HTML標簽之間的關系對于構建結構清晰、語義明確的網頁至關重要。就像在現實生活中&#xff0c;建筑物的各個部分需要按照一定的規則組合在一起一樣&#x…

238 除自身以外數組的的乘積

我的解法&#xff08;沒頭緒&#xff0c;參考AI的思路&#xff09; 好奇怪啊&#xff0c;這個題目&#xff0c;沒什么思路 題目的主要難點是&#xff0c;如何通過這個線性運算得出所有的乘積和&#xff0c;同時不適用除法。 問了下AI&#xff0c;這種題目我可以從什么方向入手&…

智能體:從技術架構到產業落地的深度解析

在人工智能技術從 “感知智能” 向 “認知智能” 跨越的關鍵階段&#xff0c;智能體&#xff08;Intelligent Agent&#xff09;作為具備自主決策與環境交互能力的核心載體&#xff0c;正成為連接 AI 算法與產業應用的重要橋梁。不同于傳統被動執行指令的軟件系統&#xff0c;智…

MATLAB基于組合近似模型和IPSO-GA的全焊接球閥焊接工藝參數優化研究

引言與研究背景 全焊接球閥的重要性&#xff1a;廣泛應用于石油、天然氣、化工等長輸管道和關鍵裝置&#xff0c;其安全性、密封性和耐久性至關重要。閥體一旦發生焊接缺陷&#xff0c;可能導致災難性后果。 焊接工藝的挑戰&#xff1a;焊接是一個涉及電、熱、力、冶金的復雜瞬…

EzRemove(ezremove.ai)評測與實操:5 秒在線摳圖、支持批量與換底(電商/設計團隊提效指南)

摘要&#xff1a;做主圖、白底圖、海報的小伙伴&#xff0c;經常被“摳圖—換底—導出”這套流程折磨。EzRemove 是一個在線 AI 摳圖工具&#xff0c;支持5 秒自動摳圖、透明 PNG 導出、批量處理、背景替換與基礎編輯&#xff0c;無需安裝本地軟件&#xff0c;適合電商商家、設…

RStudio 教程:以抑郁量表測評數據分析為例

R 語言是一種專為統計計算、數據分析和圖形可視化而設計的編程語言&#xff0c;在學術界和工業界都備受青睞。RStudio是一款為 R 語言量身打造的集成開發環境&#xff08;IDE&#xff09;。它如同一個功能強大的指揮中心&#xff0c;能夠將數據科學工作所需的一切&#xff1a;控…