为什么使用ollama~ 因为适合本地部署; 为什么是langchain~因为目前集成了很多适合多场景的函数,便于开发.

langchain+ollama 函数调用

  1. 安装langchain和ollama
  2. 安装额外的依赖:

pip install langchain-experimental

调用函数

from langchain_experimental.llms.ollama_functions import OllamaFunctions

model=OllamaFunctions(modes="qwen:4b")

# 定义函数
def get_current_weather(location):
    return "Qing~~"
# 绑定这个函数
model = model.bind(
    functions=[
        {
            "name": "get_current_weather",
            "description": "获取本地的天气情况",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "城市名称,如:添加",
                    },
                },
                "required": ["location"],
            },
        }
    ],
    function_call={"name": "get_current_weather"},
)
result=model.invoke("北京的天气怎么样?")

# 返回结果中主要的是关于参数的调用
# AIMessage(content='', additional_kwargs={'function_call': {'name': 'get_current_weather', 'arguments': '{"location": "\\u5317\\u4eac"}'}}, id='run-15765e85-7657-4413-8571-d02d656fa8ff-0')

# 编写函数,解析函数和参数.然后调用自己的函数执行.

# 额,这里暂时没找到如何库里提供的方法来解析这个输出.
# 但是可以使用比较笨的办法进行调用~
result=json.loads(result.json())
args=eval(result["additional_kwargs"]["function_call"]['arguments'])
get_current_weather(args["location"])

希望哪天有缘~可以找到这个直接解析的方法,希望可以有伙伴给我留言

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐