本文主要是介绍构建LangChain应用程序的示例代码:24、使用OpenAI工具进行文本提取教程(Extraction with OpenAI Tools),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用OpenAI工具进行文本提取教程
执行提取任务从未如此简单!OpenAI的工具调用功能是完美的选择,因为它允许从文本中提取多种不同类型的元素。
使用支持工具的模型
1106版本之后的模型使用工具,并支持“并行函数调用”,这使得任务变得非常容易。
from typing import List, Optionalfrom langchain.chains.openai_tools import create_extraction_chain_pydantic
from langchain_core.pydantic_v1 import BaseModel
from langchain_openai import ChatOpenAI
# 确保使用支持工具的最近模型
model = ChatOpenAI(model="gpt-3.5-turbo-1106")
# Pydantic是定义模式的一种简单方式
class Person(BaseModel):"""要提取的人的信息。"""
# 创建提取链
chain = create_extraction_chain_pydantic(Person, model)# 调用链
chain.invoke({"input": "jane is 2 and bob is 3"})
# 定义另一个元素
class Class(BaseModel):"""要提取的课程信息。"""
# 创建提取链
chain = create_extraction_chain_pydantic([Person, Class], model)# 调用链
chain.invoke({"input": "jane is 2 and bob is 3 and they are in Mrs Sampson's class"})
内部工作原理
在内部,这是一个简单的链:
from typing import Union, List, Type, Optionalfrom langchain.output_parsers.openai_tools import PydanticToolsParser
from langchain.utils.openai_functions import convert_pydantic_to_openai_tool
from langchain_core.runnables import Runnable
from langchain_core.pydantic_v1 import BaseModel
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import SystemMessage
from langchain_core.language_models import BaseLanguageModel_EXTRACTION_TEMPLATE = """提取并保存以下段落中提到的相关实体及其属性。如果属性不存在且在函数参数中不需要,则不要在输出中包含它。""" # noqa: E501def create_extraction_chain_pydantic(pydantic_schemas: Union[List[Type[BaseModel]], Type[BaseModel]],llm: BaseLanguageModel,system_message: str = _EXTRACTION_TEMPLATE,
) -> Runnable:if not isinstance(pydantic_schemas, list):pydantic_schemas = [pydantic_schemas]prompt = ChatPromptTemplate.from_messages([("system", system_message),("user", "{input}")])tools = [convert_pydantic_to_openai_tool(p) for p in pydantic_schemas]model = llm.bind(tools=tools)chain = prompt | model | PydanticToolsParser(tools=pydantic_schemas)return chain
总结
本文介绍了如何使用OpenAI的工具调用功能来执行文本提取任务。通过定义Pydantic模式,可以轻松创建提取链,该链可以提取和保存文本中提到的相关实体及其属性。代码示例展示了如何设置模型、定义数据模式、创建提取链以及如何调用该链来执行提取任务。内部工作原理的代码展示了如何构建提示模板、转换工具、绑定语言模型,并最终创建一个可运行的提取链。
这篇关于构建LangChain应用程序的示例代码:24、使用OpenAI工具进行文本提取教程(Extraction with OpenAI Tools)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!