LLM-Client-SDK 是一个用于与生成式 AI 大语言模型无缝集成的 SDK(我们目前支持 - OpenAI、Google、AI21、HuggingfaceHub、Aleph Alpha、Anthropic、带有 Transformer 的本地模型 - 以及即将推出的更多模型)。
我们的愿景是提供异步原生和生产就绪的 SDK,同时与不同的 LLM 创建强大且快速的集成,而不让用户失去任何灵活性(API 参数、端点等)。 *我们还提供同步版本,请参阅下面的“使用”部分中的更多详细信息。
该包公开了两个简单的接口,用于与 LLM 无缝集成(将来,我们将扩展该接口以支持更多任务,如列表模型、编辑等):
from abc import ABC, Abstractmethodfrom dataclasses import dataclass, fieldfrom Typing import Any,Optionalfrom enum import Enumfrom dataclasses_json import dataclass_json, configfrom aiohttp import ClientSessionclass BaseLLMClient(ABC):@abstractmethodasync def text_completion(self, Prompt: str, **kwargs) -> list [str]:引发 NotImplementedError()async def get_tokens_count(self, text: str, **kwargs) -> int:raise NotImplementedError()class Role(Enum):SYSTEM = "system"USER = "user"ASSISTANT = "assistant"@dataclass_json@dataclassclass ChatMessage:role: Role = field(metadata=config) (编码器=lambda角色:role.value,解码器=角色))内容:strname:可选[str] =字段(默认=无,元数据=配置(排除=lambda名称:名称是无))示例:bool = field(默认= False,元数据=配置(排除= lambda _:True)) @dataclassclass LLMAPIClientConfig:api_key: strsession: ClientSessionbase_url: 可选[str] = Nonedefault_model: 可选[str] = Noneheaders: dict[str, Any] = 字段(default_factory=dict)class BaseLLMAPIClient(BaseLLMClient, ABC):def __init__(self,配置:LLMAPIClientConfig): ...@abstractmethodasync def text_completion(self,提示:str,模型:可选[str] = None,max_tokens:int | None = None,温度:可选[float] = None,top_p:可选[float] = None,* *kwargs) -> list[str]:raise NotImplementedError()async def chat_completion(self, messages: list[ChatMessage], 温度: float = 0, max_tokens:int = 16,模型:可选[str] =无,**kwargs) - >列表[str]:引发NotImplementedError()异步def嵌入(自我,文本:str,模型:可选[str] =无,* *kwargs) -> list[float]:raise NotImplementedError()async def get_chat_tokens_count(self, messages: list[ChatMessage], **kwargs) -> int:raise NotImplementedError()
Python 3.9+
如果您担心软件包的大小,您可以只安装您需要的客户端,默认情况下我们不安装任何客户端。
对于所有当前客户的支持
$ pip install llm-client[全部]
仅适用于基本接口和一些轻型 LLM 客户端(AI21 和 Aleph Alpha)
$ pip 安装 llm 客户端
对于所有当前 api 客户端支持
$ pip install llm-client[api]
仅适用于本地客户支持
$ pip install llm-client[本地]
用于同步支持
$ pip install llm-client[同步]
仅适用于 OpenAI 支持
$ pip install llm-client[openai]
仅适用于 HuggingFace 支持
$ pip install llm-client[huggingface]
直接通过 OpenAIClient 使用 OpenAI - 生产中的最大控制和最佳实践
import osfrom aiohttp import ClientSessionfrom llm_client import ChatMessage, Role, OpenAIClient, LLMAPIClientConfigOPENAI_API_KEY = os.environ["API_KEY"]OPENAI_ORG_ID = os.getenv("ORG_ID")async def main():与 ClientSession() 异步作为会话:llm_client = OpenAIClient (LLMAPIClientConfig(OPENAI_API_KEY,会话, default_model="text-davinci-003", headers={"OpenAI-Organization": OPENAI_ORG_ID})) # 标题是可选的text = "这确实是一个测试"messages = [ChatMessage(role=Role.USER, content="您好!"),ChatMessage(role=Role.SYSTEM, content="您好!今天需要什么帮助吗?")]print("代币数量:", wait llm_client.get_tokens_count(text)) # 5print("聊天完成的令牌数量:",await llm_client.get_chat_tokens_count(messages,model="gpt-3.5-turbo")) # 23print("生成的聊天:",await llm_client. chat_completion(messages, model="gpt-3.5-turbo")) # ['嗨 那里!今天我能为您提供什么帮助?']print("生成的文本:", wait llm_client.text_completion(text)) # [' stringnn是的,这是一个测试字符串。测试字符串用于']print(“生成的嵌入:”,await llm_client.embedding(text)) # [0.0023064255,-0.009327292,...]
使用 LLMAPIClientFactory - 如果您想快速移动并且不想自己处理客户端会话,那么这是完美的选择
import osfrom llm_client import LLMAPIClientFactory, LLMAPIClientTypeOPENAI_API_KEY = os.environ["API_KEY"]async def main():与 LLMAPIClientFactory() 异步 as llm_api_client_factory:llm_client = llm_api_client_factory.get_llm_api_client(LLMAPIClientType.OPEN_AI, api_key=OPENAI_API_KEY, default_model="text-davinci-003")await llm_client.text_completion(prompt="这确实是一个测试")await llm_client.text_completion(prompt="这确实是一个测试", max_tokens=50) # 或者如果你不想使用 asyncfrom llm_client import init_sync_llm_api_clientllm_client = init_sync_llm_api_client(LLMAPIClientType.OPEN_AI, api_key=OPENAI_API_KEY, default_model="text-davinci-003")llm_client.text_completion(prompt="这确实是一个测试")llm_client.text_completion(prompt="这确实是一个测试", max_tokens=50)
本地模型
导入osfrom转换器导入AutoModelForCausalLM,AutoModelForSeq2SeqLM,AutoTokenizerfrom llm_client导入LocalClientConfig,LocalClientasync def main():try:model = AutoModelForCausalLM.from_pretrained(os.environ [“MODEL_NAME_OR_PATH”])除了ValueError:model = AutoModelForSeq2SeqLM.from_pretrained(os.environ["MODEL_NAME_OR_PATH"])tokenizer = AutoTokenizer.from_pretrained(os.environ["MODEL_NAME_OR_PATH"])llm_client = LocalClient(LocalClientConfig(model, tokenizer, os.environ["TENSORS_TYPE"], os.environ [“设备”]))等待llm_client.text_completion(prompt="这确实是一个测试")await llm_client.text_completion(prompt="这确实是一个测试", max_tokens=50)# 或者如果你不想使用 asyncimport async_to_synctry:model = AutoModelForCausalLM. from_pretrained(os.environ["MODEL_NAME_OR_PATH"])除了 ValueError:model = AutoModelForSeq2SeqLM.from_pretrained(os.environ["MODEL_NAME_OR_PATH"])tokenizer = AutoTokenizer.from_pretrained(os.environ["MODEL_NAME_OR_PATH"])llm_client = LocalClient(LocalClientConfig(model, tokenizer, os.environ["TENSORS_TYPE"], os.environ [“设备”]))llm_client = async_to_sync.methods(llm_client)llm_client.text_completion(prompt="这确实是一个测试")llm_client.text_completion(prompt="这确实是一个测试", max_tokens=50)
欢迎贡献!请查看下面的待办事项,并随时提出问题或请求请求。
列表无序
添加对更多法学硕士的支持
人择
谷歌
连贯
通过 LLM 添加对更多功能的支持
嵌入
聊天
列出型号
编辑
更多的
添加贡献指南和 linter
创建一种在相同提示下并行运行多个 LLM 的简单方法
转换常用型号参数
温度
最大令牌数
顶部_p
更多的
要在开发模式下安装该软件包,请运行以下命令:
$ pip install -e ".[全部,测试]"
要运行测试,请运行以下命令:
$ pytest 测试
如果您想添加新的LLMClient,您需要实现BaseLLMClient 或BaseLLMAPIClient。
如果您要添加 BaseLLMAPIClient,您还需要将他添加到 LLMAPIClientFactory 中。
您可以在 pyproject.toml 中添加对 LLMClient 的依赖项,同时确保在 test.yml 中添加matrix.flavor。