请问:一年前和公司签了培训协议,现在还没签劳动合同。培训协议约定服务期为3年。这个协议有效吗?

可能部分有效,但即使有效,也要建立在培训费的基础上:

劳动合同法

第二十二条用人单位为劳动者提供专项培训费,为其提供专业技术培训的,可以与劳动者订立协议,约定服务期限。

劳动者违反服务期约定的,应当按照约定向用人单位支付违约金。违约金的金额不得超过用人单位提供的培训费用。用人单位要求劳动者支付的违约金不得超过服务期未完成部分应分摊的培训费用。

用人单位与劳动者约定服务期的,不影响劳动者在服务期内按照正常的工资调整机制提高劳动报酬。

第二十三条用人单位和劳动者可以在劳动合同中约定保守用人单位的商业秘密和与知识产权有关的保密事项。

对于负有保密义务的劳动者,用人单位可以与劳动者在劳动合同或者保密协议中约定竞业限制条款,约定劳动合同解除或者终止后,在竞业限制期内按月向劳动者支付经济补偿金。劳动者违反竞业限制约定的,应当按照约定向用人单位支付违约金。

第二十四条竞业限制人员限于用人单位的高级管理人员、高级技术人员和其他负有保密义务的人员。竞业限制的范围、区域和期限由用人单位与劳动者约定,竞业限制的约定不得违反法律法规的规定。

劳动合同解除或者终止后,前款规定的人员到与本单位有竞争关系的其他用人单位生产、经营同类产品或者从事同类业务,或者自主创业生产、经营同类产品或者从事同类业务的,竞业限制期不得超过两年。

第二十五条除本法第二十二条、第二十三条规定的情形外,用人单位不得与劳动者约定由劳动者承担违约金。

-

劳动合同法实施条例

第十六条《劳动合同法》第二十二条第二款规定的培训费,包括用人单位为劳动者进行专业技术培训支付的有据可查的培训费、培训期间的差旅费以及劳动者因培训而发生的其他直接费用。