内存速率限制器#
- class langchain_core.rate_limiters.InMemoryRateLimiter(*, requests_per_second: float = 1, check_every_n_seconds: float = 0.1, max_bucket_size: float = 1)[source]#
测试版
在0.2.24版本中引入。API可能会发生变化。
基于令牌桶算法的内存速率限制器。
这是一个内存中的速率限制器,因此它不能跨不同进程进行速率限制。
速率限制器仅允许基于时间的速率限制,并不考虑输入或输出的任何信息,因此不能用于基于请求大小的速率限制。
它是线程安全的,可以在同步或异步上下文中使用。
内存中的速率限制器基于令牌桶。桶以给定的速率填充令牌。每个请求消耗一个令牌。如果桶中没有足够的令牌,请求将被阻塞,直到有足够的令牌。
这些tokens与LLM tokens无关。它们只是一种跟踪在给定时间内可以发出多少请求的方式。
当前限制:
速率限制器不设计用于跨不同进程工作。它是一个内存中的速率限制器,但它是线程安全的。
速率限制器仅支持基于时间的速率限制。它不考虑请求的大小或任何其他因素。
示例
import time from langchain_core.rate_limiters import InMemoryRateLimiter rate_limiter = InMemoryRateLimiter( requests_per_second=0.1, # <-- Can only make a request once every 10 seconds!! check_every_n_seconds=0.1, # Wake up every 100 ms to check whether allowed to make a request, max_bucket_size=10, # Controls the maximum burst size. ) from langchain_anthropic import ChatAnthropic model = ChatAnthropic( model_name="claude-3-opus-20240229", rate_limiter=rate_limiter ) for _ in range(5): tic = time.time() model.invoke("hello") toc = time.time() print(toc - tic)
在版本0.2.24中添加。
基于令牌桶的速率限制器。
这些tokens与LLM tokens无关。它们只是一种跟踪在给定时间内可以发出多少请求的方式。
此速率限制器设计用于线程环境中工作。
它的工作原理是以给定的速率向桶中填充令牌。每个请求消耗一定数量的令牌。如果桶中没有足够的令牌,请求将被阻塞,直到有足够的令牌为止。
- Parameters:
requests_per_second (float) – 每秒添加到桶中的令牌数量。 必须至少为1。这些令牌代表可以用来发出请求的“信用”。
check_every_n_seconds (float) – 每隔这么多秒检查一次令牌是否可用。可以是浮点数,表示几分之一秒。
max_bucket_size (float) – 桶中可以容纳的最大令牌数。 这用于防止请求的突发。
方法
__init__
(*[, requests_per_second, ...])基于令牌桶的速率限制器。
aacquire
(*[, blocking])尝试从速率限制器获取一个令牌。
acquire
(*[, blocking])尝试从速率限制器获取一个令牌。
- __init__(*, requests_per_second: float = 1, check_every_n_seconds: float = 0.1, max_bucket_size: float = 1) None [source]#
基于令牌桶的速率限制器。
这些tokens与LLM tokens无关。它们只是一种跟踪在给定时间内可以发出多少请求的方式。
此速率限制器设计用于线程环境中工作。
它的工作原理是以给定的速率向桶中填充令牌。每个请求消耗一定数量的令牌。如果桶中没有足够的令牌,请求将被阻塞,直到有足够的令牌为止。
- Parameters:
requests_per_second (float) – 每秒添加到桶中的令牌数量。 必须至少为1。这些令牌代表可以用来发出请求的“信用”。
check_every_n_seconds (float) – 每隔这么多秒检查一次令牌是否可用。可以是浮点数,表示几分之一秒。
max_bucket_size (float) – 桶中可以容纳的最大令牌数。 这用于防止请求的突发。
- Return type:
无
使用 InMemoryRateLimiter 的示例