yfinance技术攻关指南:提升金融数据获取效率的5个实战方案解决数据获取难题
作为一名金融数据开发者,我深知在量化分析和交易系统构建过程中,稳定高效的数据获取是基础中的基础。yfinance作为Python生态中最受欢迎的金融数据工具之一,虽然极大简化了从Yahoo Finance获取市场数据的流程,但在实际应用中仍会遇到各种棘手问题。本文将从问题定位、方案设计、实战验证到效能优化,全面解析如何攻克yfinance数据获取难题,显著提升数据获取效率,优化异常处理机制,实现批量请求的高效管理。
问题定位:精准识别数据获取障碍
诊断网络请求故障
在使用yfinance获取数据时,网络请求失败是最常见的问题之一。典型表现为API调用超时、连接重置或数据下载中断。这些问题往往不是单一因素造成的,可能涉及网络环境、服务器状态和请求策略等多个层面。
问题代码:
import yfinance as yf
# 未配置超时和重试机制的基础请求
data = yf.download("TSLA", period="1y")
优化代码:
import yfinance as yf
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# 配置请求重试策略
session = yf.Session()
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)
# 使用自定义会话和超时参数
data = yf.download(
"TSLA",
period="1y",
session=session,
timeout=10
)
对比说明:优化后的代码通过配置重试策略和超时参数,能够有效应对临时网络波动和服务器压力。Retry对象设置了3次重试机会,并对特定状态码进行强制重试,backoff_factor参数实现指数退避策略,避免加重服务器负担。
识别数据解析异常
数据解析异常常常表现为返回数据结构不符合预期、关键财务指标缺失或时间序列存在跳点。这些问题通常源于Yahoo Finance数据源格式变化或yfinance内部解析逻辑的局限性。
问题代码:
import yfinance as yf
ticker = yf.Ticker("BABA")
# 直接获取财务数据,未处理可能的解析错误
income_stmt = ticker.income_stmt
优化代码:
import yfinance as yf
import pandas as pd
ticker = yf.Ticker("BABA")
try:
# 获取财务数据并检查完整性
income_stmt = ticker.income_stmt
if income_stmt is None or income_stmt.empty:
raise ValueError("财务数据获取失败或为空")
# 处理可能的列名不一致问题
income_stmt = income_stmt.rename(columns={
'Total Revenue': 'TotalRevenue',
'Net Income': 'NetIncome'
})
# 填充缺失值
income_stmt = income_stmt.fillna(method='ffill')
except Exception as e:
print(f"财务数据处理异常: {str(e)}")
# 实现备选方案,如使用季度数据代替年度数据
income_stmt = ticker.quarterly_income_stmt
对比说明:优化代码引入了异常处理机制,对数据完整性进行检查,并处理了可能的列名不一致问题。通过填充缺失值和提供备选方案,大大提高了数据解析的健壮性。
检测版本兼容性问题
yfinance的API在不同版本间可能存在较大变化,导致旧版代码无法在新版本环境中运行。常见问题包括函数参数变更、返回值结构调整和依赖包版本冲突。
问题代码:
# 旧版本v0.1.67的代码
import yfinance as yf
# 在新版本中已废弃的方法
data = yf.download("MSFT", start="2020-01-01", end="2023-12-31", group_by='ticker')
优化代码:
# 兼容新旧版本的代码
import yfinance as yf
from packaging import version
# 检查yfinance版本
if version.parse(yf.__version__) >= version.parse("0.2.0"):
# 新版本API
data = yf.download(
"MSFT",
start="2020-01-01",
end="2023-12-31",
group_by='ticker'
)
else:
# 旧版本API兼容处理
data = yf.download(
"MSFT",
start="2020-01-01",
end="2023-12-31",
group_by='column'
)
对比说明:优化代码通过版本检测机制,实现了对新旧版本API的兼容处理。这种方式可以平滑过渡到新版本,同时保持对旧环境的支持。
方案设计:构建稳健的数据获取架构
设计智能缓存策略
缓存机制是提升数据获取效率的关键。一个设计良好的缓存策略可以显著减少重复请求,降低网络负载,同时加快数据访问速度。
问题代码:
import yfinance as yf
# 每次请求都重新获取数据,没有缓存机制
def get_stock_data(symbol):
return yf.download(symbol, period="1y")
优化代码:
import yfinance as yf
import os
from datetime import datetime, timedelta
import pickle
# 配置缓存路径
CACHE_DIR = os.path.expanduser("~/.yfinance_cache")
os.makedirs(CACHE_DIR, exist_ok=True)
def get_cached_data(symbol, period="1y", max_age_hours=24):
"""获取带缓存的数据,缓存有效期为max_age_hours小时"""
cache_file = os.path.join(CACHE_DIR, f"{symbol}_{period}.pkl")
# 检查缓存是否存在且未过期
if os.path.exists(cache_file):
modified_time = datetime.fromtimestamp(os.path.getmtime(cache_file))
if datetime.now() - modified_time < timedelta(hours=max_age_hours):
with open(cache_file, 'rb') as f:
return pickle.load(f)
# 缓存不存在或已过期,重新获取数据
data = yf.download(symbol, period=period)
# 保存到缓存
with open(cache_file, 'wb') as f:
pickle.dump(data, f)
return data
对比说明:优化代码实现了基于文件系统的缓存机制,通过设置缓存有效期,平衡了数据新鲜度和获取效率。对于历史数据等变化不频繁的信息,缓存可以显著减少网络请求。
实现并行数据请求
当需要获取多只股票数据时,串行请求会导致效率低下。通过并行请求可以充分利用网络带宽,大幅缩短数据获取时间。
问题代码:
import yfinance as yf
# 串行获取多只股票数据,效率低下
tickers = ["TSLA", "BABA", "MSFT", "AMZN", "META"]
data = {}
for ticker in tickers:
data[ticker] = yf.download(ticker, period="1y")
优化代码:
import yfinance as yf
from concurrent.futures import ThreadPoolExecutor, as_completed
def fetch_ticker_data(ticker):
"""获取单个股票数据的函数"""
try:
return ticker, yf.download(ticker, period="1y")
except Exception as e:
print(f"获取{ticker}数据失败: {str(e)}")
return ticker, None
def parallel_fetch_data(tickers, max_workers=5):
"""并行获取多只股票数据"""
data = {}
with ThreadPoolExecutor(max_workers=max_workers) as executor:
# 提交所有任务
futures = {executor.submit(fetch_ticker_data, ticker): ticker for ticker in tickers}
# 处理结果
for future in as_completed(futures):
ticker = futures[future]
try:
ticker, result = future.result()
if result is not None:
data[ticker] = result
except Exception as e:
print(f"处理{ticker}数据时出错: {str(e)}")
return data
# 使用示例
tickers = ["TSLA", "BABA", "MSFT", "AMZN", "META"]
data = parallel_fetch_data(tickers, max_workers=3) # 控制并发数量,避免触发反爬
对比说明:优化代码使用ThreadPoolExecutor实现了并行数据请求,通过控制并发数量平衡了效率和反爬风险。异常处理机制确保单个请求失败不会影响整体任务。
构建异常处理框架
在实际应用中,数据获取过程可能遇到各种不可预见的异常情况。一个健壮的异常处理框架可以提高系统的稳定性和容错能力。
问题代码:
import yfinance as yf
# 缺乏完善的异常处理
def get_stock_info(symbol):
ticker = yf.Ticker(symbol)
return ticker.info
优化代码:
import yfinance as yf
import time
from requests.exceptions import RequestException, ConnectionError, Timeout
class DataFetchError(Exception):
"""数据获取异常基类"""
pass
class RetryExhaustedError(DataFetchError):
"""重试次数耗尽异常"""
pass
def safe_get_stock_info(symbol, max_retries=3, backoff_factor=0.3):
"""安全获取股票信息,包含重试和异常处理"""
ticker = yf.Ticker(symbol)
for attempt in range(max_retries):
try:
info = ticker.info
if not info:
raise DataFetchError(f"未获取到{symbol}的信息")
return info
except (RequestException, ConnectionError, Timeout) as e:
if attempt == max_retries - 1:
raise RetryExhaustedError(f"获取{symbol}信息失败,已重试{max_retries}次") from e
# 指数退避策略
sleep_time = backoff_factor * (2 ** attempt)
print(f"获取{symbol}信息失败,将在{sleep_time:.2f}秒后重试 (尝试{attempt+1}/{max_retries})")
time.sleep(sleep_time)
except Exception as e:
raise DataFetchError(f"获取{symbol}信息时发生意外错误: {str(e)}") from e
# 使用示例
try:
info = safe_get_stock_info("TSLA")
print(f"成功获取TSLA信息: {info.get('longName')}")
except DataFetchError as e:
print(f"数据获取失败: {str(e)}")
# 实现降级策略,如使用缓存数据或默认值
对比说明:优化代码定义了自定义异常类和带重试机制的安全获取函数。指数退避策略可以有效应对临时网络问题,而全面的异常捕获确保了系统的稳定性。
图:yfinance项目采用的分支管理策略,main分支保持稳定版本,dev分支用于开发,feature分支用于新功能开发,bugfixes分支用于问题修复,确保了版本稳定性和开发效率。
实战验证:从理论到实践的落地过程
验证多场景数据获取
在实际应用中,我们需要验证不同场景下的数据获取效果,包括单只股票详细数据、多股票批量数据和特殊类型金融产品数据。
单股票多维度数据获取:
import yfinance as yf
def get_complete_stock_data(symbol):
"""获取股票的完整数据,包括价格、财务、公司信息等"""
ticker = yf.Ticker(symbol)
# 价格数据
history = ticker.history(period="max", repair=True)
# 财务数据
financials = {
"income_stmt": ticker.income_stmt,
"balance_sheet": ticker.balance_sheet,
"cash_flow": ticker.cash_flow,
"quarterly_income_stmt": ticker.quarterly_income_stmt,
"quarterly_balance_sheet": ticker.quarterly_balance_sheet,
"quarterly_cash_flow": ticker.quarterly_cash_flow,
}
# 公司信息
info = ticker.info
# 股东信息
major_holders = ticker.major_holders
institutional_holders = ticker.institutional_holders
# 公司行动
actions = ticker.actions
dividends = ticker.dividends
splits = ticker.splits
return {
"history": history,
"financials": financials,
"info": info,
"holders": {
"major": major_holders,
"institutional": institutional_holders
},
"actions": {
"dividends": dividends,
"splits": splits
}
}
# 验证特斯拉股票数据获取
tsla_data = get_complete_stock_data("TSLA")
print(f"成功获取TSLA数据: 历史数据共{len(tsla_data['history'])}条记录")
print(f"公司名称: {tsla_data['info'].get('longName')}")
print(f"最新市值: {tsla_data['info'].get('marketCap'):,} USD")
多股票批量数据对比:
import yfinance as yf
import pandas as pd
def compare_stocks(tickers, metrics=['marketCap', 'forwardPE', 'dividendYield']):
"""对比多只股票的关键指标"""
comparison = {}
for ticker in tickers:
try:
info = yf.Ticker(ticker).info
comparison[ticker] = {metric: info.get(metric) for metric in metrics}
except Exception as e:
print(f"获取{ticker}信息失败: {str(e)}")
comparison[ticker] = {metric: None for metric in metrics}
# 转换为DataFrame便于比较
df = pd.DataFrame(comparison).T
return df
# 对比不同行业代表性公司
tickers = ["TSLA", "BABA", "MSFT", "JPM", "XOM"] # 科技、电商、软件、金融、能源
comparison_df = compare_stocks(tickers)
print("股票关键指标对比:")
print(comparison_df)
特殊金融产品数据获取:
import yfinance as yf
def get_crypto_data(symbol, period="1y"):
"""获取加密货币数据"""
# 加密货币需要添加-USD后缀
crypto_ticker = f"{symbol}-USD"
data = yf.download(crypto_ticker, period=period)
return data
def get_etf_data(symbol, period="1y"):
"""获取ETF数据"""
etf = yf.Ticker(symbol)
data = {
"history": etf.history(period=period),
"holdings": etf.major_holders, # ETF持仓
"info": etf.info
}
return data
# 获取比特币数据
btc_data = get_crypto_data("BTC")
print(f"比特币历史数据: {len(btc_data)}条记录")
# 获取黄金ETF数据
gld_data = get_etf_data("GLD")
print(f"黄金ETF持仓信息:")
print(gld_data["holdings"])
验证数据质量与一致性
数据质量是金融分析的基础。我们需要验证获取的数据是否完整、准确,并与其他来源进行交叉核对。
数据完整性检查:
import yfinance as yf
import pandas as pd
def check_data_completeness(symbol, period="1y", interval="1d"):
"""检查时间序列数据的完整性"""
data = yf.download(symbol, period=period, interval=interval)
# 检查缺失值
missing_values = data.isnull().sum()
# 检查时间连续性
expected_dates = pd.date_range(start=data.index.min(), end=data.index.max(), freq='B') # 工作日频率
actual_dates = data.index
missing_dates = expected_dates[~expected_dates.isin(actual_dates)]
return {
"symbol": symbol,
"period": period,
"interval": interval,
"total_records": len(data),
"missing_values": missing_values.to_dict(),
"missing_dates_count": len(missing_dates),
"missing_dates": missing_dates.tolist() if len(missing_dates) < 10 else f"{len(missing_dates)} dates"
}
# 检查特斯拉数据完整性
tsla_completeness = check_data_completeness("TSLA", period="1y")
print("特斯拉数据完整性检查结果:")
print(f"总记录数: {tsla_completeness['total_records']}")
print(f"缺失值统计: {tsla_completeness['missing_values']}")
print(f"缺失日期数量: {tsla_completeness['missing_dates_count']}")
数据准确性验证:
import yfinance as yf
import requests
def verify_stock_price(symbol):
"""与其他数据源交叉验证股票价格"""
# 从yfinance获取价格
yf_ticker = yf.Ticker(symbol)
yf_price = yf_ticker.history(period="1d")['Close'].iloc[-1]
# 从另一个数据源获取价格(此处使用示例API,实际应用需替换为有效API)
try:
# 注意:以下API仅为示例,实际使用时需要替换为有效的第三方数据源
third_party_url = f"https://api.example.com/price/{symbol}"
response = requests.get(third_party_url)
third_party_price = response.json().get('price')
# 计算价格差异百分比
price_diff = abs(yf_price - third_party_price) / third_party_price * 100
return {
"symbol": symbol,
"yfinance_price": round(yf_price, 2),
"third_party_price": round(third_party_price, 2),
"price_diff_percent": round(price_diff, 2)
}
except Exception as e:
print(f"第三方数据源验证失败: {str(e)}")
return {"symbol": symbol, "error": str(e)}
# 验证阿里巴巴股票价格
baba_verification = verify_stock_price("BABA")
print("股票价格验证结果:")
print(baba_verification)
验证异常处理机制
一个健壮的异常处理机制需要在实际环境中进行充分验证,确保能够处理各种异常情况。
网络异常处理验证:
import yfinance as yf
import time
from unittest.mock import patch
import requests
def test_network_error_handling():
"""测试网络异常处理机制"""
symbol = "TSLA"
original_download = yf.download
# 模拟网络错误
with patch('yfinance.download') as mock_download:
mock_download.side_effect = requests.exceptions.ConnectionError("模拟网络连接错误")
start_time = time.time()
try:
data = yf.download(symbol, period="1d")
print("测试失败: 网络错误未被捕获")
except Exception as e:
elapsed_time = time.time() - start_time
print(f"测试成功: 捕获到网络错误 - {str(e)}")
print(f"错误处理耗时: {elapsed_time:.2f}秒")
# 执行网络错误处理测试
test_network_error_handling()
数据解析异常处理验证:
import yfinance as yf
import pandas as pd
def test_data_parsing_error_handling():
"""测试数据解析异常处理"""
symbol = "INVALID_SYMBOL" # 使用无效符号触发解析错误
try:
ticker = yf.Ticker(symbol)
info = ticker.info
if not info:
raise ValueError(f"未获取到{symbol}的有效信息")
print(f"测试失败: 无效符号未触发预期错误")
except Exception as e:
print(f"测试成功: 捕获到预期错误 - {str(e)}")
# 执行数据解析错误处理测试
test_data_parsing_error_handling()
效能优化:提升数据获取与处理效率
优化请求参数配置
合理配置请求参数可以显著提升数据获取效率,减少不必要的网络传输和数据处理。
优化的参数配置表:
| 参数名称 | 默认值 | 优化建议 | 适用场景 |
|---|---|---|---|
| period | '1mo' | 根据实际需求选择最小必要周期 | 历史数据分析 |
| interval | '1d' | 非高频分析无需使用分钟级数据 | 日线级别策略 |
| repair | False | 设为True自动修复价格数据 | 长期历史数据 |
| auto_adjust | False | 设为True获取已调整价格 | 技术分析 |
| prepost | False | 非盘前盘后分析无需开启 | 常规交易时间分析 |
| threads | True | 多股票下载时保持开启 | 批量数据获取 |
| proxy | None | 网络受限环境配置代理 | 受限网络环境 |
| timeout | 10 | 根据网络状况调整 | 不稳定网络环境 |
参数优化示例:
import yfinance as yf
# 优化的参数配置示例
def optimized_download(symbol, period="1y", interval="1d"):
"""优化的数据下载函数"""
return yf.download(
symbol,
period=period,
interval=interval,
repair=True, # 自动修复价格数据
auto_adjust=True, # 获取已调整价格
prepost=False, # 不包含盘前盘后数据
threads=True, # 启用多线程
timeout=15, # 适当延长超时时间
progress=False # 非交互环境关闭进度条
)
# 使用优化参数获取数据
tsla_data = optimized_download("TSLA", period="5y", interval="1d")
print(f"优化参数获取的TSLA数据: {len(tsla_data)}条记录")
实现数据压缩与存储优化
对于大量历史数据,合理的压缩和存储策略可以节省磁盘空间并提高数据读取速度。
数据压缩与存储示例:
import yfinance as yf
import pandas as pd
import os
from datetime import datetime
def fetch_and_store_data(symbol, period="max", compression="gzip"):
"""获取并压缩存储股票数据"""
# 创建数据存储目录
data_dir = "stock_data"
os.makedirs(data_dir, exist_ok=True)
# 数据文件路径
filename = f"{data_dir}/{symbol}_{period}.parquet"
# 如果文件不存在或超过7天,则重新获取数据
if not os.path.exists(filename) or (
datetime.now() - datetime.fromtimestamp(os.path.getmtime(filename))
).days > 7:
# 获取数据
data = yf.download(symbol, period=period, repair=True, auto_adjust=True)
# 存储为压缩的Parquet格式(比CSV更高效)
data.to_parquet(filename, compression=compression)
print(f"数据已保存到 {filename}")
else:
# 从本地加载数据
data = pd.read_parquet(filename)
print(f"从本地加载数据: {filename}")
return data
# 获取并存储多只股票数据
tickers = ["TSLA", "BABA", "MSFT", "AMZN", "META"]
for ticker in tickers:
fetch_and_store_data(ticker, period="max")
构建性能监控与调优体系
建立性能监控体系可以帮助我们识别瓶颈,持续优化数据获取和处理流程。
性能监控示例:
import yfinance as yf
import time
import pandas as pd
from functools import wraps
def performance_monitor(func):
"""性能监控装饰器"""
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
# 记录性能数据
performance_data = {
"function": func.__name__,
"args": args,
"kwargs": kwargs,
"execution_time": end_time - start_time,
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S")
}
# 打印性能信息
print(f"{func.__name__} 执行时间: {performance_data['execution_time']:.4f}秒")
# 可以将性能数据保存到日志或数据库进行分析
# save_performance_data(performance_data)
return result
return wrapper
@performance_monitor
def monitored_download(symbol, period="1y"):
"""带性能监控的数据下载函数"""
return yf.download(symbol, period=period)
# 测试不同周期数据下载性能
periods = ["1d", "1wk", "1mo", "3mo", "1y", "5y", "max"]
performance_results = []
for period in periods:
start_time = time.time()
data = monitored_download("TSLA", period=period)
execution_time = time.time() - start_time
performance_results.append({
"period": period,
"records": len(data),
"execution_time": execution_time,
"records_per_second": len(data) / execution_time if execution_time > 0 else 0
})
# 显示性能对比
performance_df = pd.DataFrame(performance_results)
print("\n不同周期数据下载性能对比:")
print(performance_df)
版本迁移指南:从v0.1.67到v0.2.3
yfinance从v0.1.67到v0.2.3版本有一些重要的API变更,了解这些变化有助于平滑过渡到新版本。
核心API变更对比
| 功能 | v0.1.67 | v0.2.3 | 迁移建议 |
|---|---|---|---|
| 数据下载 | yf.download() | yf.download() | 参数基本兼容,但部分参数默认值有变化 |
| Ticker对象 | yf.Ticker() | yf.Ticker() | 构造函数不变,但部分方法返回值结构有调整 |
| 财务数据 | ticker.financials | ticker.income_stmt | 方法重命名,返回格式调整 |
| 历史数据 | ticker.history() | ticker.history() | 参数基本兼容,新增repair参数 |
| 多股票数据 | 需手动循环 | yf.Tickers() | 新增Tickers类支持批量操作 |
| 缓存机制 | 无内置支持 | yf.set_tz_cache_location() | 新增内置缓存支持 |
兼容新旧版本的过渡代码示例
数据下载兼容性代码:
import yfinance as yf
from packaging import version
def compatible_download(tickers, start=None, end=None, period="1y"):
"""兼容新旧版本的数据下载函数"""
yf_version = version.parse(yf.__version__)
if yf_version >= version.parse("0.2.0"):
# 新版本API
data = yf.download(
tickers,
start=start,
end=end,
period=period,
repair=True, # 新版本新增参数
group_by='ticker'
)
else:
# 旧版本API兼容处理
data = yf.download(
tickers,
start=start,
end=end,
period=period,
group_by='column' # 旧版本参数
)
return data
# 使用兼容函数下载数据
data = compatible_download(["TSLA", "BABA"], period="1y")
财务数据获取兼容性代码:
import yfinance as yf
from packaging import version
def get_income_statement(ticker):
"""兼容新旧版本的利润表获取函数"""
yf_version = version.parse(yf.__version__)
t = yf.Ticker(ticker)
if yf_version >= version.parse("0.2.0"):
# 新版本使用income_stmt
return t.income_stmt
else:
# 旧版本使用financials
return t.financials
# 获取阿里巴巴利润表
baba_income = get_income_statement("BABA")
多股票数据获取兼容性代码:
import yfinance as yf
from packaging import version
def get_multiple_tickers_data(tickers):
"""兼容新旧版本的多股票数据获取函数"""
yf_version = version.parse(yf.__version__)
if yf_version >= version.parse("0.2.0"):
# 新版本使用Tickers类
ts = yf.Tickers(tickers)
return {ticker: ts.tickers[ticker].history(period="1y") for ticker in tickers}
else:
# 旧版本手动循环
return {ticker: yf.Ticker(ticker).history(period="1y") for ticker in tickers}
# 获取多只股票数据
tickers_data = get_multiple_tickers_data(["TSLA", "BABA", "MSFT"])
通过本文介绍的问题定位方法、解决方案设计、实战验证流程和效能优化技巧,你已经掌握了使用yfinance进行高效金融数据获取的核心技能。无论是处理网络请求故障、解析异常数据,还是优化批量请求性能,这些实战方案都能帮助你构建更加健壮、高效的数据获取系统。随着yfinance的不断更新,建议保持关注新版本特性,并持续优化你的数据获取策略,以应对不断变化的金融数据获取挑战。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
