如何为通过Hugging Face推理端点(API)调用的模型启用日志记录?
如何为通过Hugging Face推理端点(API)调用的模型启用日志记录?
我懂你的困扰——用Hugging Face推理API调用模型,不是本地跑transformers库,官方文档里的日志方案全不适用,确实有点挠头。不过别慌,有几个实用的办法能帮你搞定日志记录:
手动搭建自定义日志系统
既然你完全掌控着API调用的代码逻辑,那自己加日志模块就是最直接的方案,完全不用依赖transformers的工具。你可以用Python自带的logging模块,把每次请求的prompt、参数、响应内容,甚至请求耗时、状态码这些关键信息都记录下来。
给你调整下你的现有代码,直接就能用:
import os import json import logging from time import perf_counter from huggingface_hub import InferenceClient from dotenv import load_dotenv # 配置日志:同时输出到文件和控制台 logging.basicConfig( level=logging.INFO, format='%(asctime)s | %(levelname)s | %(message)s', handlers=[ logging.FileHandler('hf_inference_logs.log'), # 持久化到日志文件 logging.StreamHandler() # 实时打印到控制台 ] ) load_dotenv() repo_id = "microsoft/Phi-3-mini-4k-instruct" llm_client = InferenceClient( model=repo_id, timeout=120, ) def call_llm(inference_client: InferenceClient, prompt: str): # 记录请求前的关键信息,加个耗时统计 start_time = perf_counter() logging.info(f"新请求 | Prompt内容: {prompt[:50]}...") # 过长的prompt可以截断显示 logging.info(f"请求参数: max_new_tokens=300") try: response = inference_client.post( json={ "inputs": prompt, "parameters": {"max_new_tokens": 300}, "task": "text-generation", }, ) # 记录响应状态码和耗时 elapsed_time = perf_counter() - start_time logging.info(f"请求完成 | 状态码: {response.status_code} | 耗时: {elapsed_time:.2f}s") response_data = json.loads(response.decode())[0]["generated_text"] # 记录完整响应内容 logging.info(f"模型响应: {response_data}") return response_data except Exception as e: # 出错时记录详细错误信息,方便排查 logging.error(f"请求失败 | 错误信息: {str(e)}", exc_info=True) raise
你还可以根据自己的需求调整日志格式,比如加个唯一请求ID来追踪每一次调用,或者把日志存成JSON格式,方便后续用脚本分析批量数据。要是觉得自带的logging用着麻烦,也可以换loguru库,语法更简洁,功能也更全。
利用推理端点的内置监控(补充方案)
如果你用的是Hugging Face托管的推理端点,平台本身会帮你记录一些基础运行数据,比如总请求量、平均延迟、错误率这些。不过要注意,出于隐私和存储成本的考虑,平台不会帮你保存具体的prompt和响应内容,所以这个只能作为自定义日志的补充,没法替代前者。
备注:内容来源于stack exchange,提问作者Ketan Kunkalikar




