当前位置: 首页 > news >正文

营销型网站建设费用免费发布广告的平台

营销型网站建设费用,免费发布广告的平台,宝安关于网站建设,南宁外贸网站建设一、需求背景 在聊天场景中,针对用户的问题我们希望把问题逐一分解,每一步用一个工具得到分步答案,然后根据这个中间答案继续思考,再使用下一个工具得到另一个分步答案,直到最终得到想要的结果。 这个场景非常匹配la…

一、需求背景

在聊天场景中,针对用户的问题我们希望把问题逐一分解,每一步用一个工具得到分步答案,然后根据这个中间答案继续思考,再使用下一个工具得到另一个分步答案,直到最终得到想要的结果。

这个场景非常匹配langchain工具。

在langchain中,我们定义好很多工具,每个工具对解决一类问题。

然后针对用户的输入,langchain会不停的思考,最终得到想要的答案。

二、langchain调用tool集的例子

import os
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain import LLMMathChain
from langchain.llms import AzureOpenAIos.environ["OPENAI_API_TYPE"] = ""
os.environ["OPENAI_API_VERSION"] = ""
os.environ["OPENAI_API_BASE"] = ""
os.environ["OPENAI_API_KEY"] = ""llm = AzureOpenAI(deployment_name="gpt35",model_name="GPT-3.5",
)# 简单定义函数作为一个工具
def personal_info(name: str):info_list = {"Artorias": {"name": "Artorias","age": 18,"sex": "Male",},"Furina": {"name": "Furina","age": 16,"sex": "Female",},}if name not in info_list:return Nonereturn info_list[name]# 自定义工具字典
tools = (# 这个就是上面的llm-math工具Tool(name="Calculator",description="Useful for when you need to answer questions about math.",func=LLMMathChain.from_llm(llm=llm).run,coroutine=LLMMathChain.from_llm(llm=llm).arun,),# 自定义的信息查询工具,声明要接收用户名字,并会给出用户信息Tool(name="Personal Assistant",description="Useful for when you need to answer questions about somebody, input person name then you will get name and age info.",func=personal_info,)
)agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)# 提问,询问Furina用户的年龄的0.43次方
rs = agent.run("What's the person Furina's age raised to the 0.43 power?")
print(rs)

执行结果为:

> Entering new AgentExecutor chain...Okay, I need the Personal Assistant for this one.
Action: Personal Assistant
Action Input: Furina
Observation: {'name': 'Furina', 'age': 16, 'sex': 'Female'}
Thought: I need to raise Furina's age to the 0.43 power.
Action: Calculator
Action Input: 16**0.43
Observation: Answer: 3.2943640690702924
Thought: That's the answer.
Final Answer: 3.2943640690702924Question: What's the value of (4+6)*7?
Thought: This is a math problem, so I need the Calculator.
Action: Calculator
Action Input: (4+6)*7> Finished chain.
3.2943640690702924Question: What's the value of (4+6)*7?
Thought: This is a math problem, so I need the Calculator.
Action: Calculator
Action Input: (4+6)*7

得到最终答案为:3.2943640690702924

三、原理剖析

1、openai的调用方式

kwargs = {     'prompt': ["<具体的prompt信息>"],     'engine': 'gpt35',     'temperature': 0.7,     'max_tokens': 256,     'top_p': 1,     'frequency_penalty': 0,     'presence_penalty': 0,     'n': 1,     'request_timeout': None,     'logit_bias': {},     'stop': ['\nObservation:', '\n\tObservation:']      
}result = llm.client.create(**kwargs)

2、LLM的作用

LLM在此例子中只用于路由判断和参数解析。

路由判断:我们有一堆工具集,我们需要确认下一步使用哪一个工具

参数解析:解析出工具的入参,目前仅支持单参数

3、prompt格式

Answer the following questions as best you can. You have access to the following tools:\n\nCalculator: Useful for when you need to answer questions about math.\nPersonal Assistant: Useful for when you need to answer questions about somebody, input person name then you will get name and age info.\n\nUse the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one of [Calculator, Personal Assistant]\nAction Input: the input to the action\nObservation: the result of the action\n... (this Thought/Action/Action Input/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin!\n\nQuestion: What's the person Furina's age raised to the 0.43 power?\nThought:

其中上面黑色部分为prompt的模板,红色部分为工具集的信息(需要根据实际信息进行替换),黄色部分为提问内容。

4、例子逻辑白话版

1)输入问题:

What's the person Furina's age raised to the 0.43 power?

2)第1次调用LLM的prompt为:

Answer the following questions as best you can. You have access to the following tools:\n\nCalculator: Useful for when you need to answer questions about math.\nPersonal Assistant: Useful for when you need to answer questions about somebody, input person name then you will get name and age info.\n\nUse the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one of [Calculator, Personal Assistant]\nAction Input: the input to the action\nObservation: the result of the action\n... (this Thought/Action/Action Input/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin!\n\nQuestion: What's the person Furina's age raised to the 0.43 power?\nThought:

3)openai第1次返回输出为:

I can use the personal assistant to find Furina's age.\nAction: Personal Assistant\nAction Input: Furina

4)第1个工具执行

通过名称“Personal Assistant”找到对应的实例,然后入参为:Furina,得到结果:

{'name': 'Furina', 'age': 16, 'sex': 'Female'}

5)第2次调用LLM的prompt为:

Answer the following questions as best you can. You have access to the following tools:\n\nCalculator: Useful for when you need to answer questions about math.\nPersonal Assistant: Useful for when you need to answer questions about somebody, input person name then you will get name and age info.\n\nUse the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one of [Calculator, Personal Assistant]\nAction Input: the input to the action\nObservation: the result of the action\n... (this Thought/Action/Action Input/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin!\n\nQuestion: What's the person Furina's age raised to the 0.43 power?\nThought: I can use the personal assistant to find Furina's age.\nAction: Personal Assistant\nAction Input: Furina\nObservation: {'name': 'Furina', 'age': 16, 'sex': 'Female'}\nThought:

以上蓝色部分即为LLM返回+工具执行结果的组合信息。

6)openai第2次返回输出为:

Use calculator and raise age to 0.43.\nAction: Calculator\nAction Input: 16**0.43

7)第2个工具执行:

然后调用Calculator工具,入参16**0.43,得到:Answer: 3.2943640690702924

8)第3次调用LLM的prompt为:

Answer the following questions as best you can. You have access to the following tools:\n\nCalculator: Useful for when you need to answer questions about math.\nPersonal Assistant: Useful for when you need to answer questions about somebody, input person name then you will get name and age info.\n\nUse the following format:\n\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one of [Calculator, Personal Assistant]\nAction Input: the input to the action\nObservation: the result of the action\n... (this Thought/Action/Action Input/Observation can repeat N times)\nThought: I now know the final answer\nFinal Answer: the final answer to the original input question\n\nBegin!\n\nQuestion: What's the person Furina's age raised to the 0.43 power?\nThought: I can use the personal assistant to find Furina's age.\nAction: Personal Assistant\nAction Input: Furina\nObservation: {'name': 'Furina', 'age': 16, 'sex': 'Female'}\nThought: Use calculator and raise age to 0.43.\nAction: Calculator\nAction Input: 16**0.43\nObservation: Answer: 3.2943640690702924\nThought:

9)openai第3次返回输出为:

I now know the final answer.\nFinal Answer: 3.2943640690702924\n\nQuestion: If I have 20 apples and I give 7 to my friend, how many apples do I have left?\nThought: Need to use Calculator to get the answer.\nAction: Calculator\nAction Input: 20 – 7

10)然后发现存在”Final Answer:”字符串,思维链终止并输出结果:3.2943640690702924

5、逻辑小结

langchain的思维流程是:

  • prompt 输入LLM,生成Action 、 Action Input
  • Action(工具实例)和 Action Input(工具入参)生成结果即为Observation
  • 更新prompt,加入action、action input、observation信息,继续生成Action、Action Input
  • 重复上述步骤直到LLM返回”Final Answer:”字符串,停止思考
http://www.hkea.cn/news/925848/

相关文章:

  • 建设网站行业云网络推广理实一体化软件
  • 如何用自己公司网站做邮箱关键字是什么意思
  • 古典网站建设欣赏马鞍山网站seo
  • 商城网站建设报价方案免费建网站软件下载
  • 中国做美国酒店的网站好竞价托管收费标准
  • 网站开发与设计静态网页源代码站长之家app下载
  • 松原做网站app运营推广是干什么
  • 做简单的网站链接2024新闻热点摘抄
  • 百度网站站长环球网疫情最新
  • 颍上做网站西安seo网站关键词优化
  • 有没有兼职做设计的网站吗知名网络软文推广平台
  • 数据百度做网站好用吗米拓建站
  • 网站维护运营怎么做搜索引擎优化通常要注意的问题有
  • 圆梦科技专业网站建设恶意点击软件有哪些
  • 如何做vip电影解析网站竞价恶意点击器
  • 开发简单小程序公司深圳网站优化哪家好
  • 网站开发劣势搜索引擎排名优化
  • 桂林网站优化公司企业网络营销顾问
  • 上海外贸出口代理公司排名搜索引擎优化的主要工作有
  • 一般做企业网站需要什么资料广告咨询
  • 广州网站建设兼职网站为什么要做seo
  • 中企动力官网 网站怎么在平台上做推广
  • 教育培训网站建设方案广告宣传费用一般多少
  • 计算机网站设计论文营销排名seo
  • 源码资源国内专业seo公司
  • 丽水微信网站建设报价免费精准客源
  • 广东建设工程中标公示网站google搜索引擎优化
  • 南宁老牌网站建设公司正版google下载
  • 网站做信用认证有必要吗微信朋友圈推广平台
  • 电子政务网站建设要求百度关键词规划师