LangChain 是一个开源的应用开发框架,旨在将大型语言模型(LLM)与开发者现有的知识和系统相结合,以提供更智能化的服务。具体来说,LangChain 可以帮助开发者f轻松地管理与 LLM 的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。
此外,LangChain 还提供了多种工具、组件和接口,以简化创建由 LLM 提供支持的应用程序的过程。例如,它提供了模型输入/输出管理工具,用于管理 LLM 及其输入和格式化输出;Prompt 模板支持自定义 Prompt 工程的快速实现以及和 LLMs 的对接;Utils 组件提供了大模型常见的植入能力的封装,如搜索引擎、Python 编译器、Bash 编译器、数据库等;Chains 组件则提供了大模型针对一系列任务的顺序执行逻辑链。
因此,LangChain 的应用场景非常广泛,可以应用于自然语言处理、聊天机器人、智能客服、文本生成等多个领域。同时,由于其开源的特性,LangChain 也可以被广大开发者用于定制开发自己的 LLM 应用,从而推动人工智能技术的不断发展和创新。
主要实现了一个基于 OpenAI 的 GPT-3.5 模型的聊天对话系统,并设置了一个函数来跟踪 API 令牌的使用情况。
pipinstalllangchainpipinstallopenaipipinstallddtrace
使用 Langchain 创建 LLM,模型选择 gpt-3.5 。
llm=ChatOpenAI(model='gpt-3.5-turbo',temperature=0)
创建一个 ConversationChain 对象,传入之前创建的 llm 对象,设置 verbose 为 True(表示输出详细的调试信息),并使用 ConversationBufferMemory 作为记忆储存。
conversation=ConversationChain(llm=llm,verbose=True,memory=ConversationBufferMemory())
定义一个函数 track_tokens_usage ,它接受一个对话链和一个查询作为参数。
deftrack_tokens_usage(chain,query):withget_openai_callback()ascb:result=chain.run(query)print(f"prompttoken{cb.prompt_tokens},restoken{cb.completion_tokens},totaltoken{cb.total_tokens}")print(f"successfulrequests{cb.successful_requests},totalcost{cb.total_cost}USD")print(result)returnresult
通过回调函数 get_openai_callback 创建一个回调对象 cb ,并通过对象 cb 可以获取请求相关信息:请求数、消耗金额、令牌数量等。
track_tokens_usage(conversation,"介绍一下观测云可观测性的产品及优势")
由于执行完成后,进程会退出,添加以下代码阻止退出,方便相关数据及时上报。
print("脚本执行完成,按Enter键退出...")input()
DD_SERVICE="my-langchain"DD_ENV="dev"DD_AGENT_HOST="localhost"DD_AGENT_PORT="9529"ddtrace-runpython3langchain_demo.py