langchain中函数调用和工具调用
时间: 2025-02-04 09:23:49 浏览: 192
### LangChain 函数调用与工具调用
#### 函数调用
在LangChain框架内,函数调用指的是直接集成特定功能到LLM(大型语言模型)的工作流程中。当用户发出请求时,系统能够解析该请求并自动执行相应的预定义函数[^1]。例如,在Llama 2环境中设置了一个用于获取当前时间戳的简单Python函数:
```python
from datetime import datetime
def get_current_timestamp():
"""返回当前的时间戳"""
now = datetime.now()
timestamp = now.strftime("%Y-%m-%d %H:%M:%S")
return {"timestamp": timestamp}
```
这种类型的函数可以直接被聊天机器人调用来响应用户的即时需求。
#### 工具调用
相比之下,工具调用涉及更复杂的过程,通常是为了实现某些高级特性而设计的功能模块集合。这些工具可能包括但不限于搜索引擎、数据库查询接口或其他第三方服务API。通过配置`render_text_description`这样的组件,开发者可以让代理理解如何解释来自不同源的数据描述,并据此采取行动[^2]。
以Tavily搜索为例,这是一个具体的外部资源检索插件,允许代理根据输入的问题去互联网上查找相关信息。为了使这一过程更加智能化,可以通过编写自定义逻辑来指导何时以及怎样触发此类操作[^3]。
#### 实际应用对比
对于简单的计算任务或是内部状态更新来说,采用内置函数可能是最简便的选择。然而,如果目标是增强机器人的交互能力,使其能处理更为广泛的任务,则应该考虑引入更多的专用工具支持。下面是一个展示两者差异的小例子:
##### 内置函数示例
假设有一个场景是要让AI助手报告今天的日期:
```python
import langchain as lc
# 定义一个简单的函数
def today_date():
from datetime import date
return str(date.today())
lc.register_function(today_date, "today_date")
response = lc.call_function("what's the date today?", ["today_date"])
print(response)
```
##### 外部工具示例
再看另一个情况,即利用Wikipedia API来进行知识型问答:
```python
import wikipediaapi
wiki_wiki = wikipediaapi.Wikipedia('en')
def search_wikipedia(query):
page_py = wiki_wiki.page(query)
if not page_py.exists():
return f"No results found for '{query}'"
summary = page_py.summary[0:240] + '...'
url = page_py.fullurl
result = {
"summary": summary,
"link": url
}
return result
lc.add_tool(search_wikipedia)
question = "Tell me about Python programming language."
answer = lc.use_tool(question, tool="search_wikipedia")
print(f"{answer['summary']}\nRead more at {answer['link']}")
```
在这个案例里,不仅实现了信息的获取,还提供了额外的学习材料链接给用户。
阅读全文
相关推荐




















