构建LangChain应用程序的示例代码:67、如何使用OpenAI函数实现文本引用提取

发布于:2024-07-20 ⋅ 阅读:(52) ⋅ 点赞:(0)

引用检索源

这篇文章展示了如何使用OpenAI函数能力从文本中提取引用。

from langchain.chains import create_citation_fuzzy_match_chain
from langchain_openai import ChatOpenAI

# 中文注释:
# 导入必要的库
# create_citation_fuzzy_match_chain 用于创建引用模糊匹配链
# ChatOpenAI 用于实例化OpenAI的聊天模型
question = "作者在大学期间做了什么?"
context = """
我叫Jason Liu,在加拿大多伦多长大,但出生于中国。
我上的是艺术高中,但在大学我学习的是计算数学和物理。
作为实习的一部分,我在许多公司工作过,包括Stitchfix和Facebook。
我还在滑铁卢大学创立了数据科学俱乐部,并担任俱乐部主席两年。
"""

# 中文注释:
# 定义问题和上下文
# question: 我们要询问的问题
# context: 包含答案的文本上下文
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")

# 中文注释:
# 初始化ChatOpenAI模型
# temperature=0: 使输出更加确定和一致
# model="gpt-3.5-turbo-0613": 指定使用的模型版本
chain = create_citation_fuzzy_match_chain(llm)

# 中文注释:
# 创建引用模糊匹配链
# 这个链将用于从上下文中提取与问题相关的引用
result = chain.run(question=question, context=context)

# 中文注释:
# 运行链,传入问题和上下文
# 结果将包含从上下文中提取的相关事实和证据
print(result)

# 中文注释:
# 打印结果
# 输出将包含与问题相关的事实和对应的文本引用
def highlight(text, span):
    return (
        "..."
        + text[span[0] - 20 : span[0]]
        + "*"
        + "\033[91m"
        + text[span[0] : span[1]]
        + "\033[0m"
        + "*"
        + text[span[1] : span[1] + 20]
        + "..."
    )

# 中文注释:
# 定义高亮函数
# 用于在控制台中高亮显示文本中的特定部分
# 使用ANSI转义序列来改变文本颜色
for fact in result.answer:
    print("陈述:", fact.fact)
    for span in fact.get_spans(context):
        print("引用:", highlight(context, span))
    print()

# 中文注释:
# 遍历结果中的每个事实
# 打印事实陈述
# 然后打印对应的高亮引用
# 使用之前定义的highlight函数来格式化输出

总结:

本文档展示了如何使用OpenAI的函数能力从文本中提取引用。它使用LangChain库创建了一个模糊匹配链,该链可以从给定的上下文中提取与问题相关的事实和证据。文档包括了完整的代码示例,演示了如何设置环境、创建链、运行查询以及格式化输出结果。

扩展知识:

  1. OpenAI函数调用:
    OpenAI的函数调用功能允许模型生成结构化输出。这在提取特定信息或格式化响应时特别有用。

  2. LangChain:
    LangChain是一个用于开发以语言模型为中心的应用程序的框架。它提供了多种工具和抽象,简化了复杂NLP任务的实现。

  3. 模糊匹配:
    在文本分析中,模糊匹配允许我们找到相似但不完全相同的文本片段。这在处理自然语言时很有用,因为同一个概念可能以略微不同的方式表达。

  4. 文本引用提取:
    自动从大段文本中提取相关引用是许多NLP应用的关键功能,如问答系统、文档摘要和事实核查工具。

  5. ANSI转义序列:
    这些是用于控制终端输出格式的特殊字符序列。在此示例中,它们用于在控制台中创建彩色文本输出。


网站公告

今日签到

点亮在社区的每一天
去签到