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 BaseMCdefSunion( **kwargs) -> list [str]:raise 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:角色:角色=欄位(元資料=配置(編碼器=lambda角色:角色.值,解碼器=角色))內容:strname:可選[str] =欄位(預設=無,元資料=配置(排除 = lambda 名稱:名稱為 None))範例:bool = 欄位(預設 = False,元資料 = config(排除 = lambda _:True)) @dataclassclass LLMAPIClientConfig:api_key: strsession: ClientSessionbase_url: 可選[str] = Nonedefault_model: 選用[str] = Noneheaders: dict[str, Any] = 欄位(default_factory=dict)class BaseLLMAPIClient(BaseLLli. 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, model: 可選[str] = None, ** kwargs) -> list[str]:raise NotImplementedError()async def embedding(self, text: str, model:Optional[str] = None, **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 - 生產中的最大控制和最佳實踐
。 _client = OpenAIClient (LLMAPIClientConfig(OPENAI_API_KEY, session, default_model="text-davinci-003", headers={"OpenAI-Organization": OPENAI_ORG_ID})) # 標頭是可選的text = "這確實是測試"messages = [ChatMessage (role= Role.USER, content="Hello!"),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(“生成的嵌入:”,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_clicli_factory_llm. lientType.OPEN_AI, , default_model="文字-達文西- 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_clis="text-dam. client .text_completion(prompt ="這確實是個測試", max_tokens=50)
本地模型
導入osfrom轉換器導入AutoModelForCausalLM,AutoModelForSeq2SeqLM,AutoTokenizerfrom llm_client導入LocalClientConfig,LocalClientasync def main():try:model = AutoModelForCausalLM.from_pretrained(Sevif; q2SeqLM.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.enenviron]ENSSaconviron"DEVORS_vironS_vironS_viron_SFv)")[Sv.)" llm_client .text_completion(prompt="這確實是一個測試")await llm_client.text_completion(prompt="這確實是一個測試", max_tokens=50)# 或者如果你不想使用 asyncimport async_to_synctry:Camodelb. environ["MODEL_NAME_OR_PATH"])除了ValueError:model = AutoModelForSeq2SeqLM.from_pretrained(os.environ["MODEL_NAME_OR_PATH"])tokenizer = AutoTokenizer.from_KCltrained(D.encal; fig(model) , tokenizer , os.environ["TENSORS_TYPE"], os.environ["DEVICE"]))llm_client = async_to_sync.methods(llm_client)llm_client.text_completion(prompt="這確實是一個測試")llm'dent.text_com確實是測試”,max_tokens=50)
歡迎貢獻!請查看下面的待辦事項,並隨時提出問題或要求要求。
列表無序
增加更多法學碩士的支持
人擇
連貫性
透過 LLM 添加對更多功能的支持
嵌入
聊天
列出型號
編輯
更多的
新增貢獻指南和 linter
建立在相同提示下並行執行多個 LLM 的簡單方法
轉換常用型號參數
溫度
最大令牌數
頂部_p
更多的
若要在開發模式下安裝軟體包,請執行以下命令:
$ pip install -e ".[全部,測試]"
若要執行測試,請執行以下命令:
$ pytest 測試
如果您想要新增的LLMClient,您需要實作BaseLLMClient 或BaseLLMAPIClient。
如果您要新增 BaseLLMAPIClient,您還需要將他新增至 LLMAPIClientFactory 中。
您可以在 pyproject.toml 中新增對 LLMClient 的依賴項,同時確保在 test.yml 中新增matrix.flavor。