LangCahin (草稿版 未整理)

LLMchain

链其实可以被视为 LangChain 中的一种基本功能单元。

相当于直接调用内部的 _call_ or run 


# 导入所需的库from langchain import Prompt Template, OpenAI, LLMChain

# 原始字符串模板
template = "{flower}的花语是?"
# 创建模型实例
llm = OpenAI(temperature=0)
# 创建LLMChain
llm_chain = LLMChain( llm=llm, prompt=PromptTemplate.from_template(template))
# 调用LLMChain,返回结果
result = llm_chain("玫瑰")
print(result)


# chain(参数dict)  ~ chain.__call__

prompt = PromptTemplate(
    input_variables=["flower", "season"],
    template="{flower}在{season}的花语是?",
)
llm_chain = LLMChain(llm=llm, prompt=prompt)
print(llm_chain({
    'flower': "玫瑰",
    'season': "夏季" }))

# chain.predict(flower="玫瑰")
result = llm_chain.predict(flower="玫瑰")print(result)


# apply允许您针对输入列表运行链
input_list = [ {"flower": "玫瑰",'season': "夏季"}, {"flower": "百合",'season': "春季"}, {"flower": "郁金香",'season': "秋季"}]
result = llm_chain.apply(input_list)
print(result)

generate 方法类似于 apply,只不过它返回一个 LLMResult 对象,而不是字符串。LLMResult 通常包含模型生成文本过程中的一些相关信息,例如令牌数量、模型名称等。
result = llm_chain.generate(input_list)print(result)

 Sequential Chain:顺序链

from langchain.llms import OpenAIfrom langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.chains import SequentialChain

# 这是总的链,我们按顺序运行这三个链
overall_chain = SequentialChain(
    chains=[introduction_chain, review_chain, social_post_chain],
    input_variables=["name", "color"],
    output_variables=["introduction","review","social_post_text"],
    verbose=True)

# 运行链,并打印结果
result = overall_chain({"name":"玫瑰", "color": "黑色"})
print(result)

ReAct框架,推理与行动的协同

在 LangChain 中使用代理,我们只需要理解下面三个元素。

大模型:提供逻辑的引擎,负责生成预测和处理输入。

与之交互的外部工具:可能包括数据清洗工具、搜索引擎、应用程序等。

控制交互的代理:调用适当的外部工具,并管理整个交互过程的流程。

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run("目前市场上玫瑰花的平均价格是多少?如果我在此基础上加价15%卖出,应该如何定价?")

源码解析

agent 类方法  from_llm_and_tools 实例化了一个 agent_obj

然后用

返回  AgentExecutor 实例

run 的时候



 代理(Agent)

这个类决定下一步执行什么操作。它由一个语言模型和一个提示(prompt)驱动。提示可能包含代理的性格(也就是给它分配角色,让它以特定方式进行响应)、任务的背景(用于给它提供更多任务类型的上下文)以及用于激发更好推理能力的提示策略(例如 ReAct)。LangChain 中包含很多种不同类型的代理。

 工具(Tools):

工具是代理调用的函数。这里有两个重要的考虑因素:一是让代理能访问到正确的工具,二是以最有帮助的方式描述这些工具。如果你没有给代理提供正确的工具,它将无法完成任务。如果你没有正确地描述工具,代理将不知道如何使用它们。LangChain 提供了一系列的工具,同时你也可以定义自己的工具。

工具包(Toolkits):

工具包是一组用于完成特定目标的彼此相关的工具,每个工具包中包含多个工具。比如 LangChain 的 Office365 工具包中就包含连接 Outlook、读取邮件列表、发送邮件等一系列工具。当然 LangChain 中还有很多其他工具包供你使用。

代理执行器(AgentExecutor)

:代理执行器是代理的运行环境,它调用代理并执行代理选择的操作。执行器也负责处理多种复杂情况,包括处理代理选择了不存在的工具的情况、处理工具出错的情况、处理代理产生的无法解析成工具调用的输出的情况,以及在代理决策和工具调用进行观察和日志记录。

Prompty源码解析

背景 带着问题看源码是最效率的,

 我这边穿了 dict  但是最后出来的是一个的"content=[...]"的string类型给openapi 

解析

这里调用了


 在这里被转成了 string

为什么会走到这里 其实和我一开始定义的

 有关 

本质和这样没区别

 

 相当于 这样 

我们需要找一个 不会被乱解析的 PromptTemplate

找了一下 没找打  只有string类型  PromptTemplate 可以自己实现一个

定制langchain的Tools 实现自己想要的功能

导入的load_tools 需要重写  然后从这边入手 

 

实现了  但是 自然语音理解错我们的意思了 

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值