diff --git a/Pasted image 20250317180130.png b/Pasted image 20250317180130.png new file mode 100644 index 0000000..d482c35 Binary files /dev/null and b/Pasted image 20250317180130.png differ diff --git a/Pasted image 20250317180245.png b/Pasted image 20250317180245.png new file mode 100644 index 0000000..d70a517 Binary files /dev/null and b/Pasted image 20250317180245.png differ diff --git a/日常学习/大模型/function calling.md b/日常学习/大模型/function calling.md new file mode 100644 index 0000000..a4796c2 --- /dev/null +++ b/日常学习/大模型/function calling.md @@ -0,0 +1,58 @@ +# 一、概念 +function Calling 是一种机制,允许大语言模型[动态调用](https://zhida.zhihu.com/search?content_id=254823414&content_type=Article&match_order=1&q=%E5%8A%A8%E6%80%81%E8%B0%83%E7%94%A8&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NDIzNzc4MTgsInEiOiLliqjmgIHosIPnlKgiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNTQ4MjM0MTQsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.SFQ4VSfJ2VWn-0GlIyT2_oZcB3dIPRDbBWFy9g7gYmM&zhida_source=entity)外部函数或API,以完成特定任务。例如,当用户提问“今天的天气如何?”时,模型可以通过调用天气API获取实时数据并返回结果。这种方式不仅提升了模型的实用性,还使其能够处理复杂的多步骤任务。 + +流程如下: +![[Pasted image 20250317180245.png]] + +1. 用户输入问题或指令。 +2. 模型分析输入,生成 [JSON 格式](https://zhida.zhihu.com/search?content_id=254823414&content_type=Article&match_order=1&q=JSON+%E6%A0%BC%E5%BC%8F&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3NDIzNzc4MTgsInEiOiJKU09OIOagvOW8jyIsInpoaWRhX3NvdXJjZSI6ImVudGl0eSIsImNvbnRlbnRfaWQiOjI1NDgyMzQxNCwiY29udGVudF90eXBlIjoiQXJ0aWNsZSIsIm1hdGNoX29yZGVyIjoxLCJ6ZF90b2tlbiI6bnVsbH0.CqcXsaw3SWw2cR64Zo3MC3hEnVXL7SwKfAfkt-xau9I&zhida_source=entity)的函数调用请求。 +3. 后端解析请求,调用对应函数或API。 +4. 将函数返回的结果传递回模型。 +5. 模型基于结果生成最终回答。 + +# 二、Deepseek function calling + +1. tools定义 +deepseek 官方定义的格式(最多支持 128 个 function),参考 https://api-docs.deepseek.com/zh-cn/guides/function_calling +```json +{ + "type": "function", + "function": { + "name": "get_current_weather", + "description": "Get weather of an location, the user shoud supply a location first", + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state, e.g. San Francisco, CA", + } + }, + "required": ["location"] + }, + } +} +``` + +2. 函数绑定及调用 +```python +模型初始化 +llm = ChatOpenAI( + model='deepseek-r1-250120', api_key='4eefc827-187f-4756-9637-7e0153c93d81', + base_url='https://ark.cn-beijing.volces.com/api/v3/', max_tokens=4096, temperature=0.5, streaming=True +) + + +@staticmethod +def invoke_with_tool(user_input: str): + """ + 工具链调用,function calling时system prompt不会生效 + :param user_input: :return: 这里返回的是LLM推理出的tool信息,格式如下: + [{'name': 'get_current_weather', 'args': {'location': 'Beijing, China'}, 'id': 'call_xeeq4q52fw9x61lkrqwy9cr6', 'type': 'tool_call'}] """ llm_with_tools = llm.bind_tools(TOOLS) + return llm_with_tools.invoke(user_input).tool_calls +``` + +3. 返回样例,包含函数名和参数 +```json +[{'name': 'get_current_weather', 'args': {'location': 'Beijing, China'}, 'id': 'call_xeeq4q52fw9x61lkrqwy9cr6', 'type': 'tool_call'}] +``` diff --git a/本机环境/开发环境.md b/本机环境/开发环境.md index 2a902f0..338a62d 100644 --- a/本机环境/开发环境.md +++ b/本机环境/开发环境.md @@ -208,3 +208,9 @@ cd /opt/homebrew/Cellar/apache-flink/1.20.1/libexec/bin && ./start-cluster.sh ``` web UI http://localhost:8081/#/overview + ++ marqo +```shell +docker pull marqoai/marqo:latest +docker run --name marqo -it --privileged -p 8882:8882 --add-host host.docker.internal:host-gateway marqoai/marqo:latest +```