大型语言模型(llm)已经彻底改变了我们与文本交互的方式,OpenAI、Google、AI21、HuggingfaceHub、Anthropic和众多开源模型提供了不同的功能和优势。但是每个模型都有其独特的体系结构、api和兼容性需求,集成这些模型是一项耗时且具有挑战性的任务。
所以这时候LangChain就解决了这个问题,LLM集成工具为将不同的语言模型集成到您的项目中提供了一种简化的方法。抽象了与每个LLM相关的复杂性和细微差别。使用LangChain,可以节省宝贵的时间和精力。
我这里又发现了一个刚刚发布不久的集成工具LLM-Client就出现了,本文将深入研究LLM -client和LangChain的特性、优势和注意事项。
LLM-Client和LangChain
llm-client和LangChain作为在不同的llm和项目需求之间架起桥梁,提供一致的API,无需大量的代码修改就可以在llm之间切换。这种灵活性和兼容性使得实验不同的模型、比较它们的性能并为您的项目选择最合适的模型变得更加容易。
LangChain以其广泛的功能而闻名,可以帮我们作为LLM的通用接口,管理提示的框架,提供长期记忆的中心接口,索引,LLM链以及LLM无法处理的任务(例如,计算或搜索)的其他代理。它有一个庞大的社区支持系统(目前GitHub上有超过45K star)。
而LLM-Client是专门为大型语言模型(llm)集成而设计的。它用户友好的界面,专注于消除集成复杂性为开发人员提供了无缝的体验。
LangChain
LangChain庞大的社区是一个显著的优势。LangChain还擅长于对非异步使用的直接支持。
要使用LangChain生成文本,可以使用以下代码:
安装
pip install langchain[llms]
最简单的调用:
import os
from langchain.llms import OpenAI # Or any other model avilable on LangChain
os.environ["OPENAI_API_KEY"] = ... # insert your API_TOKEN here
llm = OpenAI(model_name="text-ada-001", n=2, best_of=2) # Here you can pass addtinal params e.g temperature, max_tokens etc.
llm("Tell me a joke")
对于异步文本生成(仅对某些模型可用),可以使用以下代码:
await llm.agenerate(["Hello, how are you?"])
LLM-Client
llm-client提供了一个带有标准化参数的包装器,使开发人员能够绕过复杂的设置或不一致的配置。该工具专为与llm无缝集成而设计,调用起来更简单。
llm-client为开发人员提供了对ClientSession的更大控制,主要是为异步操作提供了便利。下面是如何与llm-client异步执行文本补全:
安装:
pip install llm-client[api]
代码示例:
import os
from aiohttp import ClientSession
from llm_client import OpenAIClient, LLMAPIClientConfig # Or any other model avilable on llm-client
async with ClientSession() as session:
llm_client = OpenAIClient(LLMAPIClientConfig(os.environ["API_KEY"], session, default_model="text-ada-001")
text = "This is indeed a test"
print("generated text:", await llm_client.text_completion(text, n=2, best_of=2)) # Here you can pass addtinal params e.g temperature, max_tokens etc.
在不使用async的情况下完成上述操作:
from llm_client import init_sync_llm_api_client
llm_client = init_sync_llm_api_client(LLMAPIClientType.OPEN_AI, api_key=os.environ["API_KEY"],
default_model="text-ada-001")
text = "This is indeed a test"
llm_client.text_completion(text, n=2, best_of=2)
llm_client.embedding(text)
LangChain和LLM-Client比较
这里有一个简单的列表,这个列表是LLM-Client的开发人员提供的所以仅供参考:
总结
LangChain丰富的社区和直接的非异步使用可能适合寻找协作环境和更简单的同步操作的开发人员。
LLM-Client客户端的性能、灵活性和LLM集成的针对性设计使其成为那些寻求最大控制、高效和精简工作流程的人的是一个很好的工具,尤其是有异步的调用可以提高响应性能。
作者:Uri Peled
https://avoid.overfit.cn/post/4f53410529ed4f708f223a024e4863b3