原贴链接

TL;DR 为Ollama工具调用定义函数感觉相当冗长,肯定有我不知道的更好方法和最佳实践。此外,我还想知道与函数调用和相关库相关的其他事情(放在标题和下面的要点中)。我向你们寻求灵感以及关于这个主题的有用技巧、窍门和提示。我现在使用Python,但JavaScript也可以。

嘿,伙计们,

自从Ollama几天前推出了原生工具支持(参见https://ollama.com/blog/tool-support),我开始着手研究它。我用来测试的项目是一个利用LLM从SQL数据库获取数据的聊天机器人。

我开始以函数的形式定义一些用例。主要是一些基本的东西,比如“获取最高工资的条目”或类似的东西,如get_highest_salary。我添加了更多函数,然后开始使用新的Ollama函数调用进行集成。在这样做的时候,我有一些问题,希望能从你们那里得到更多信息。

我在标题中放了一些问题,还有一些放在这里:

  • 我注意到创建JSON函数定义感觉相当冗长。难道不能通过创建文档字符串,然后将其转换为JSON对象来完成吗?
  • 我还想知道是否有已经更好的方法来使用函数调用从SQL数据库获取数据。有没有更适合这项任务的其他东西?
  • 抛开SQL宠物项目,有没有任何库带有可以直接与Ollama工具调用(和openai函数调用,据我所知)一起使用的工具?我主要寻找与Google日历集成、发送电子邮件的集成,但我对这方面的任何信息都感兴趣。到目前为止,我找到了https://github.com/ComposioHQ/composio,但还没有时间测试它。

最好是额外的库不要太固执己见,不强迫我使用某个框架。在最理想的情况下,有一种方法可以将文档字符串转换为工具JSON对象,并且有一些方法可以使用预定义的工具,我可以在使用Python中的ollama模块进行调用时简单地注入Ollama的工具数组。

抱歉帖子很长。我只是超级新手,想测试一下水,亲自检查一下没有框架的函数调用和工具是否适合我和我未来的宠物项目。

非常感谢你们,你们太棒了!

讨论总结

本次讨论主要聚焦于如何最大化利用Ollama的工具支持,特别是在定义函数调用时减少冗余和提高效率。参与者提出了使用docstring自动生成JSON函数定义的想法,并探讨了现有库如LangChain和ComposioHQ的适用性。讨论还涉及了避免特定框架依赖和寻找预制工具的需求。

主要观点

  1. 👍 使用docstring自动生成JSON函数定义
    • 支持理由:可以显著减少定义函数的冗余工作,提高开发效率。
    • 反对声音:可能存在一定的非确定性,影响代码的稳定性。
  2. 🔥 寻找现成的库或工具来简化Ollama工具支持的使用
    • 正方观点:LangChain和ComposioHQ等库提供了现成的工具和渲染器,可以简化开发过程。
    • 反方观点:这些库可能存在一定的学习曲线和依赖性。
  3. 💡 避免使用过于依赖特定框架的库
    • 解释:用户希望找到不强制使用特定框架的库,以便更灵活地集成到现有项目中。

金句与有趣评论

  1. “😂 Why not just put the necessary documentation into context and explain the tool you want to a good enough llm and have it write out the function itself as well as whatever json you need?”
    • 亮点:提出了一个创新的方法,利用LLM自动生成函数和JSON定义。
  2. “🤔 LangChain has some support for this already and they have tool renders that can take cues from a Pydantic object and turn it into a proper function call”
    • 亮点:介绍了LangChain的工具渲染器功能,为简化工具生成提供了新思路。
  3. “👀 Yes it works”
    • 亮点:简洁有力的肯定了上述方法的可行性。

情感分析

讨论的总体情感倾向积极,参与者对简化工具生成过程和寻找高效解决方案表现出浓厚兴趣。主要分歧点在于选择合适的库和方法,以及如何平衡开发效率和代码稳定性。

趋势与预测

  • 新兴话题:利用LLM自动生成函数和JSON定义可能会成为未来的趋势。
  • 潜在影响:简化工具生成过程将显著提高开发效率,推动更多创新项目的实施。