LangSmith 基本使用教程

LangSmith 是一個強大的工具,可以幫助開發者追蹤、監控和分析語言模型應用程序的性能。下面我將介紹兩種基本的追蹤方式:追蹤 OpenAI 調用和追蹤整個應用程序。

1. 追蹤 OpenAI 調用 (Trace OpenAI calls)

這種方法主要用于追蹤對 OpenAI API 的調用,可以幫助您了解每個 API 調用的詳細信息、性能和結果。

from openai import OpenAI
from langsmith.wrappers import wrap_openai
import os
openai_client = wrap_openai(OpenAI(api_key = "",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
)
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGCHAIN_API_KEY"] = ""def retriever(query: str):results = ["Harrison worked at Kensho"]return resultsdef rag(question):docs = retriever(question)system_message = """Answer the users question using only the provided information below:{docs}""".format(docs="\n".join(docs))res= openai_client.chat.completions.create(messages=[{"role": "system", "content": system_message},{"role": "user", "content": question},],model="qwen-turbo",)print(res.choices[0].message.content)return resif __name__ == "__main__":rag("where did harrison work")

在這個例子中,wrap_openai 函數會自動追蹤所有通過包裝后的客戶端進行的 API 調用。這些調用會被記錄到 LangSmith 平臺,您可以在那里查看詳細信息。

2. 追蹤整個應用程序 (Trace entire application)

這種方法可以追蹤整個應用程序的流程,包括中間步驟和函數調用,提供更全面的視圖。

from openai import OpenAI
from langsmith import traceable
from langsmith.wrappers import wrap_openai
import os# 設置環境變量
os.environ["LANGSMITH_TRACING"] = "true"  # 啟用全局追蹤
os.environ["LANGCHAIN_API_KEY"] = ""# 包裝 OpenAI 客戶端
openai_client = wrap_openai(OpenAI(api_key="",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
)# 定義可追蹤的檢索函數
@traceable
def retriever(query: str):results = ["Harrison worked at Kensho"]return results# 定義可追蹤的 RAG 函數
@traceable
def rag(question):# 追蹤檢索步驟docs = retriever(question)# 構建系統消息system_message = """Answer the users question using only the provided information below:{docs}""".format(docs="\n".join(docs))# 追蹤 LLM 調用步驟return openai_client.chat.completions.create(messages=[{"role": "system", "content": system_message},{"role": "user", "content": question},],model="qwen-turbo",)if __name__ == "__main__":# 整個應用程序流程將被追蹤response = rag("where did harrison work")print(response.choices[0].message.content)

在這里插入圖片描述

在這個例子中,我們使用了:

  1. LANGSMITH_TRACING=true 環境變量來啟用全局追蹤
  2. @traceable 裝飾器來追蹤特定函數
  3. 包裝的 OpenAI 客戶端來追蹤 API 調用

這樣,整個應用程序的流程都會被記錄下來,包括:

  • 檢索函數的輸入和輸出
  • RAG 函數的整個流程
  • OpenAI API 調用的詳細信息

查看追蹤結果

完成追蹤后,您可以在 LangSmith 平臺 (https://smith.langchain.com/) 上查看詳細的追蹤信息,包括:

  • 函數調用鏈
  • 每個步驟的輸入和輸出
  • 執行時間和性能指標
  • API 調用的詳細信息

總結

  1. 追蹤 OpenAI 調用:使用 wrap_openai 包裝 OpenAI 客戶端,適合只關注 API 調用的場景。
  2. 追蹤整個應用程序:使用 LANGSMITH_TRACING=true@traceable 裝飾器,適合需要全面了解應用程序流程的場景。

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

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

相關文章

Python基礎學習-Day23

目錄 基礎概念轉換器(transformer)估計器(estimator)管道(pipeline) 實例pipeline 基礎概念 pipeline在機器學習領域可以翻譯為“管道”,也可以翻譯為“流水線”,是機器學習中一個重…

相對論速度疊加公式與雙曲正切

復習下相對論速度疊加公式吧,物理,是不是很多人都忘了呀。假設速度為 u , v u,v u,v,那么疊加后的速度 w w w為: w u v 1 u v / c 2 w\frac{uv}{1uv/c^2} w1uv/c2uv? ??這個公式告訴我們,在一個速度為2/3光速的…

【前綴和】和為 K 的子數組(medium)

【前綴和】和為 K 的子數組 題目描述算法原理和細節問題代碼 題目描述 和為 K 的子數組 給定一個整數數組和一個整數 k ,請找到該數組中和為 k 的連續子數組的個數。 示例 1: 輸入:nums [1,1,1], k 2 輸出: 2 解釋: 此題 [1,1] 與 [1,1] 為兩種不同的…

在Ubuntu服務器上部署Label Studio

一、拉取鏡像 docker pull heartexlabs/label-studio:latest 二、啟動容器 &#xff08;回到用戶目錄&#xff0c;例&#xff1a;輸入pwd&#xff0c;顯示 /home/<user>&#xff09; docker run -d --name label-studio -it -p 8081:8080 -v $(pwd)/mydata:/label-st…

MySQL 從入門到精通(三):日志管理詳解 —— 從排錯到恢復的核心利器

在 MySQL 數據庫的日常運維中&#xff0c;日志是定位問題、優化性能、數據恢復的核心工具。無論是排查服務器啟動異常&#xff0c;還是分析慢查詢瓶頸&#xff0c;亦或是通過二進制日志恢復誤刪數據&#xff0c;日志都扮演著 “數據庫黑匣子” 的角色。本文將深入解析 MySQL 的…

內存中的“BANK”

一、BANK的定義與物理結構 基本概念 BANK&#xff08;存儲體&#xff09; 是內存芯片內部的一個邏輯或物理分區&#xff0c;每個BANK由存儲單元陣列、地址解碼電路和緩沖器組成&#xff0c;用于分塊管理內存操作。 作用&#xff1a;通過并行操作減少訪問沖突&#xff0c;提升內…

機器學習——聚類算法練習題

一、 隨機創建不同二維數據集作為訓練集 &#xff0c;并結合k-means算法將其聚類 &#xff0c;你可以嘗試分別聚類不同數量的簇 &#xff0c;并觀察聚類 效果&#xff1a; 聚類參數n_cluster傳值不同 &#xff0c;得到的聚類結果不同 代碼展示&#xff1a; from sklearn.da…

kafka----初步安裝與配置

目錄標題 ?kafka 與 zookeeper間的關系一.集群部署二.修改配置文件三.分發安裝包四.啟動與關閉 kafka 與 zookeeper 相同&#xff0c;是以集群的形式使用 ?kafka 與 zookeeper間的關系 kafka 的使用 要在 zookeeper 集群配置好的基礎上 使用要想啟動kafka 要先啟動 zookeep…

進程與線程:07 CPU調度策略

一、課程內容概述 本節課程主要講解操作系統的CPU調度策略&#xff0c;聚焦于基本操作系統上的調度算法&#xff0c;探討其大致實現方式、需折中考慮的問題。CPU調度在不同場景下復雜程度不同&#xff0c;如衛星、導彈等實時性要求高的系統&#xff0c;需采用實時調度&#xf…

JPG與PDF格式轉換器

該插件可實現JPG與PDF格式的互轉。 MainForm.Designer.cs using System.Windows.Forms; namespace JpgToPdfConverter {partial class MainForm{private System.ComponentModel.IContainer components null;protected override void Dispose(bool disposing){if (disposing &…

LlamaIndex 第八篇 MilvusVectorStore

本指南演示了如何使用 LlamaIndex 和 Milvus 構建一個檢索增強生成&#xff08;RAG&#xff09;系統。 RAG 系統將檢索系統與生成模型相結合&#xff0c;根據給定的提示生成新的文本。該系統首先使用 Milvus 等向量相似性搜索引擎從語料庫中檢索相關文檔&#xff0c;然后使用生…

淺聊一下數據庫的索引優化

背景 這里的索引說的是關系數據庫&#xff08;MSSQL&#xff09;中的索引。 本篇不是純技術性的內容&#xff0c;只是聊一次性能調優的經歷&#xff0c;包含到一些粗淺的實現和驗證手段&#xff0c;所以&#xff0c;大神忽略即可。 額…對了&#xff0c;筆者對數據庫的優化手段…

【android bluetooth 框架分析 02】【Module詳解 7】【VendorSpecificEventManager 模塊介紹】

1. 背景 我們在 gd_shim_module 介紹章節中&#xff0c;看到 我們將 VendorSpecificEventManager 模塊加入到了 modules 中。 // system/main/shim/stack.cc modules.add<hci::VendorSpecificEventManager>();在 ModuleRegistry::Start 函數中我們對 加入的所有 module…

小剛說C語言刷題—1080質因子

1.題目描述 任意輸入一正整數 N &#xff0c;求出它的所有質因子。如&#xff1a;10&#xff1d;25&#xff0c;20&#xff1d;225。 輸入 輸入只有一行&#xff0c;包括 11個整數 n (1≤n≤32768) 輸出 輸出若干行&#xff0c;按從小到大的順序給出這個數的所有質因子&am…

C語言中的宏

1.防止頭文件重復包含 1.#pragma once #pragma once 是一個編譯器指令&#xff0c;用于防止頭文件被重復包含。它的核心作用是通過簡單語法替代傳統的頭文件保護宏&#xff08;#ifndef/#define/#endif&#xff09;&#xff0c;提升代碼簡潔性和可維護性。 作用詳解 防止重復…

MapReduce 模型

?引言? MapReduce 是分布式計算領域的里程碑式模型&#xff0c;由 Google 在 2004 年論文中首次提出&#xff0c;旨在簡化海量數據處理的復雜性。其核心思想是通過函數式編程的 ?Map? &#xff08;映射&#xff09;和 ?Reduce? &#xff08;歸約&#xff09;階段&#x…

Linux文件編程——標準庫函數fopen、fread、fwrite等函數

1. fopen — 打開文件 函數原型&#xff1a; FILE *fopen(const char *filename, const char *mode);參數&#xff1a; filename&#xff1a;要打開的文件名&#xff0c;可以是相對路徑或絕對路徑。 mode&#xff1a;文件打開模式&#xff0c;表示文件的操作方式&#xff08…

從 Git 到 GitHub - 使用 Git 進行版本控制 - Git 常用命令

希望本貼能從零開始帶您一起學習如何使用 Git 進行版本控制&#xff0c;并結合遠程倉庫 GitHub。這會是一個循序漸進的指南&#xff0c;我們開始吧&#xff01; 學習 Git 和 GitHub 的路線圖&#xff1a; 理解核心概念&#xff1a;什么是版本控制&#xff1f;Git 是什么&…

2025.05.11拼多多機考真題算法崗-第四題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 04. 記憶碎片重組 問題描述 盧小姐正在開發一款名為"記憶碎片"的游戲,玩家需要分析混亂的記憶數據,推測出形成這些記憶的原始序列。游戲中,記憶數據存儲在一個特殊的數…

Android Exoplayer多路不同時長音視頻混合播放

在上一篇Android Exoplayer 實現多個音視頻文件混合播放以及音軌切換中我們提到一個問題&#xff0c;如果視頻和音頻時長不一致&#xff0c;特別是想混合多個音頻和多個視頻時就會出問題&#xff0c;無法播放。報錯如下&#xff1a; E/ExoPlayerImplInternal(11191): Playback…