首页 > 编程语言 >ollama python 新版本支持传递python 函数

ollama python 新版本支持传递python 函数

时间:2024-11-27 13:12:12浏览次数:7  
标签:function python tool two int numbers 版本 ollama

在ollama python sdk 的最近更新中,支持传递python 函数到chat 调用中,以下是一个简单示例

参考使用

  • app.py
from ollama import chat
from ollama import ChatResponse


def add_two_numbers(a: int, b: int) -> int:
  """
  Add two numbers

  Args:
    a (int): The first number
    b (int): The second number

  Returns:
    int: The sum of the two numbers
  """
  return a + b


def subtract_two_numbers(a: int, b: int) -> int:
  """
  Subtract two numbers
  """
  return a - b


# Tools can still be manually defined and passed into chat
subtract_two_numbers_tool = {
  'type': 'function',
  'function': {
    'name': 'subtract_two_numbers',
    'description': 'Subtract two numbers',
    'parameters': {
      'type': 'object',
      'required': ['a', 'b'],
      'properties': {
        'a': {'type': 'integer', 'description': 'The first number'},
        'b': {'type': 'integer', 'description': 'The second number'},
      },
    },
  },
}

prompt = 'What is three plus one?'
print('Prompt:', prompt)

available_functions = {
  'add_two_numbers': add_two_numbers,
  'subtract_two_numbers': subtract_two_numbers,
}

response: ChatResponse = chat(
  'qwen2.5:1.5b',
  messages=[{'role': 'user', 'content': prompt}],
  tools=[add_two_numbers, subtract_two_numbers_tool],
)

if response.message.tool_calls:
  # There may be multiple tool calls in the response
  for tool in response.message.tool_calls:
    # Ensure the function is available, and then call it
    if function_to_call := available_functions.get(tool.function.name):
      print('Calling function:', tool.function.name)
      print('Arguments:', tool.function.arguments)
      print('Function output:', function_to_call(**tool.function.arguments))
    else:
      print('Function', tool.function.name, 'not found')
  • 效果

说明

尽管支持传递函数,但是格式是有一些要求的,需要添加函数docs 说明

参考资料

https://github.com/ollama/ollama-python/blob/main/examples/tools.py

https://google.github.io/styleguide/pyguide.html#doc-function-raises

标签:function,python,tool,two,int,numbers,版本,ollama
From: https://www.cnblogs.com/rongfengliang/p/18572142

相关文章

  • python 多进程multiprocessing 内存占用 物理内存 虚拟内存 windows 分析
     只有importtimetime.sleep(10) 前边加上fromtorch.utils.dataimportDataset   importtorch#检查是否支持CUDAiftorch.cuda.is_available():print("CUDAisavailable!")print(f"Devicecount:{torch.cuda.device_count()}")p......
  • 使用cython扩展python库
    什么是CythonCython是一种静态编译的编程语言,它结合了Python的易用性和C语言的高性能,并主要用于加速Python程序和与C/C++集成。它以一种接近Python的语法编写代码,并在编译过程中将其转换为高效的C代码,从而提高运行性能。Cython的主要用途性能优化:用于加速计算......
  • keil版本切换,while(1)debug只执行一次,仿真发现连续点击多次全速运行才可以进入main
    while(1)里的程序只执行一次,如果while(1)里的所有代码在debug都可以打断点,那么while(1)里的程序不运行就说明卡在那个运行还没出来。如果有的地方不可以打断点就说明keil优化等级的问题导致在debug运行不下去。  keil下载完程序后,仿真发现连续点击多次全速运行才可以进入main,原因是......
  • [Python手撕]二叉树的锯齿形层序遍历
    二叉树的锯齿形层序遍历给你二叉树的根节点root,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root......
  • [Python手撕]岛屿的最大面积
    LCR105.岛屿的最大面积给定一个由0和1组成的非空二维数组grid,用来表示海洋岛屿地图。一个岛屿是由一些相邻的1(代表土地)构成的组合,这里的「相邻」要求两个1必须在水平或者竖直方向上相邻。你可以假设grid的四个边缘都被0(代表水)包围着。找到给定的二维数组中......
  • Ollama本地部署Qwen2.5 14B(使用docker实现Nvidia GPU支持)
    前提条件:已经本地安装好了Ollama。如果没有安装Ollama或者想部署其他的模型或者不想使用docker,,可以参考之前的这篇文章:https://www.cnblogs.com/Chenlead/p/18571005安装过程参考:https://docs.openwebui.com/getting-started/quick-start/1.docker拉取open-webui镜像在命令行......
  • python 接口自动化面试宝典
    python接口基础语法(一)python中的tuplelistsetdict在测试中的应用1.Tuple(元组):元组是不可变的序列,这使得它非常适合在测试中表示固定的、不会改变的数据集2.List(列表):列表是可以修改的序列,因此它是进行各种算法和数据操作的好工具3.Set(集合):集合是无序且不重复元素的......
  • deepin 技术双周报丨Treeland支持截图录屏功能、适配 wlroots 0.18 版本,6.12 内核完成
    第六期deepin技术双周报已出炉,我们会简单列出deepin各个小组在过去两周的相关工作进展,也会阐述未来两周的大致规划,一起来看!DDE针对deepin23的缺陷修复与deepin25的需求开发在同步稳步进行。具体进展与计划如下:进展:a.  对剪切板、DDE会话组件、DDEPolkit组件......
  • python中urllib库和requests库的选择
    python中urllib和requests是两个最常用的库。它们都能够发送HTTP请求,但在使用方式、功能和效率上存在一些差异。一、urllib库urllib是Python标准库中的一个模块,用于发送HTTP请求。它提供了一个简单的接口来发送GET、POST等请求,并获取响应。urllib提供了一些基本的HTTP请求方......
  • 大数据学习记录,Python基础(1)
    修改pip源由于直接从python服务器下载各种插件速度较慢,我们可以通过修改下载地址的方法提高下载速度修改pip源找到系统盘下C:\Users\用户名\AppData\Roaming,APPData可能是隐藏文件,需要将隐藏关闭;查看在Roaming文件夹下有没有一个pip文件夹,如果没有创建一个;进入pip文件夹,创建一......