讨教一个关于 go 程序和 Python 程序交互的问题

2024-05-23 11:35:01 +08:00
 Gocobnus

自己做的 ai 项目,本来是通过 go 写的后端代码,但是最近了解到微软的 autogen(基于 python)支持 agent 比较好,就想使用 autogen 来进行 agent 的开发,通过 go 的服务和 python 代码交互,于是就出现一个问题,go 的服务如何和 python 交互,我的需求不涉及到流式返回,也不涉及到太大的文件返回,现在有两种思路 1.通过 cmd 运行获取 std 输出 2.让 python 和 go 通过网络通信

2749 次点击
所在节点    程序员
25 条回复
zzhaolei
2024-05-23 12:25:54 +08:00
可以通过 go python binding 调用 py 的代码,但是很多项目都不维护了。

也可以考虑进程间通信那些方式来交换数据
deplives
2024-05-23 12:57:06 +08:00
面试题:进程间通信都有那些方式
txzh007
2024-05-23 14:07:05 +08:00
走 socket 吧
Ally
2024-05-23 14:10:42 +08:00
gRPC
aababc
2024-05-23 14:15:26 +08:00
七牛的 许老师 最近在搞 llgo 好像就是这方面的内容,应该是直接在代码层面的。可以了解一下看看
NessajCN
2024-05-23 14:25:42 +08:00
named pipe
unix domain socket
tcp socket
sophos
2024-05-23 14:28:43 +08:00
跨语言交互如果不是需要极端性能或者 ffi binding 方案很成熟,优选网络通信

http+json 或 grpc 都挺好 :-) python 和 go 都有很成熟的框架了
yaott2020
2024-05-23 14:28:45 +08:00
加一种:CGO ,但是楼主应该不需要
wen20
2024-05-23 14:33:20 +08:00
选 cmd 运行呗,不用改 python, 对接其他 python 命令规范还能保持一样。
noooop
2024-05-23 14:36:06 +08:00
谢邀,用 zeromq ,正好我现在做一个开源库,基于 zmq 的大语音模型微服务框架。https://github.com/noooop/zerollama
noooop
2024-05-23 14:41:31 +08:00
typo

谢邀,用 zeromq ,正好我现在做一个开源库,基于 zmq 的大语言模型微服务框架。https://github.com/noooop/zerollama

@noooop
flyqie
2024-05-23 14:43:59 +08:00
进程间通信。

最好不要进 binding 这个大坑。
zjsxwc
2024-05-23 14:45:37 +08:00
以前一个项目也是 go 与 python 相互调用,我用了 redis 里 topic 的 sub/pub
lambdaq
2024-05-23 14:59:11 +08:00
路过。小 tip:头像为二次元大佬推荐的都比较靠谱~~~~
roundgis
2024-05-23 15:02:39 +08:00
zeromq

or

redis
iyaozhen
2024-05-23 15:07:17 +08:00
面试造火箭还是有点用的

一般来说就 http 最方便了 python 起个服务,后面要转流式( base http/3 )也方便
xsen
2024-05-23 16:18:23 +08:00
@iyaozhen #16 跟面试造火箭有一毛钱关系

MQ 类( nsq/nats/kafka/rbbitmq 等等,包括 gRPC )就是用来做类似东西的
iosyyy
2024-05-23 17:17:23 +08:00
@xsen mq 也太重了 不可取
haiku
2024-05-23 17:18:29 +08:00
grpc ,可以用 unix 。socket 减少网络延迟
Peven
2024-05-23 18:15:40 +08:00
grpc protobuffer

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043213

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX